이번 CodigBat문제는 String관련 문제들!
String에서 java.util.regex.Pattern.matches가 많이 사용됨!
주의해서 일반적인 코딩방법과, Pattern.matches를 사용하는 방법을 살펴보자!
1. helloName
주어진 문자열에 "Hello "문자열을 문자열 앞에 추가해 출력
public String helloName(String name) {
return "Hello " + name + "!";
}
2. makeAbba
주어진 두개의 문자열a,b를 abba형식으로 반환해라.
public String makeAbba(String a, String b) {
return a+b+b+a;
}
3. makeTags
주어진 두개의 문자열 tag와 word를 사용해 <tag>word</tag>형식으로 반환해라.
public String makeTags(String tag, String word) {
return "<"+tag+">"+word+"</"+tag+">";
}
4. makeOutWord
주어진 out문자열을 반으로 나누어 word문자열을 감싸는 형식으로 출력할것
ex) out : <<>>, word: word => <<word>>
public String makeOutWord(String out, String word) {
return out.substring(0,2) + word + out.substring(2,out.length());
}
5. extraEnd
주어진 문자열에서 마지막 2개 문자들을 세번 반복해서 출력해라. 만약 주어진 문자열길이가 3보다 2보다 작다면
그냥 그 문자열을 세번 반복해서 출력할 것.
public String extraEnd(String str) {
if(str.length() > 2){
str = str.substring(str.length()-2);
}
return str + str + str;
}
6. firstTwo
주어진 문자열에서 앞에서 두번째 문자까지 출력할것. (str.length()를 사용해서 == 문자열길이함수)
public String firstTwo(String str) {
if(str.length() > 1){
str = str.substring(0,2);
}
return str;
}
7. firstHalf
주어진 문자열을 반으로 나누어 앞 문자열을 출력할것. ex) "WooHoo" -> "Woo"
public String firstHalf(String str) {
return str.substring(0,str.length()/2);
}
8. withoutEnd
주어진 문자열의 첫번째와 마지막 문자를 제거해서 출력해라.
public String withoutEnd(String str) {
return str.substring(1,str.length()-1);
}
9. comboString
주어진 두개의 문자열의 길이를 비교해 짧은 문자열 + 긴 문자열 + 짧은 문자열 형태로 출력해라.
public String comboString(String a, String b) {
if(a.length() > b.length()){
String s = a;
a = b;
b = s;
}
return a + b + a;
}
10. nonStart
주어진 두개의 문자열의 각각의 가장 앞글자를 제외하고 합쳐서 출력
public String nonStart(String a, String b) {
return a.substring(1) + b.substring(1);
}
11. left2
주어진 문자열 길이가 2보다 클때, 문자열 인덱스 2번부터 끝까지 출력 + 인덱스0~1까지 출력.
public String left2(String str) {
if(str.length() > 2){
str = str.substring(2) + str.substring(0,2);
}
return str;
}
12. right2
주어진 문자열에서 마지막 문자열 2문자들을 먼저출력후 나머지 문자열을 출력해라.
public String right2(String str) {
if(str.length() > 2){
str = str.substring(str.length()-2) + str.substring(0,str.length()-2);
}
return str;
}
13. theEnd
주어진 문자열과 boolean값에서, boolean값이 true이면 주어진 문자열의 가장 앞 문자, boolean값이 false이면 주어진 문자열의 마지막 문자를 출력해라.
public String theEnd(String str, boolean front) {
if(front){
return str.substring(0,1);
}
return str.substring(str.length()-1);
}
14. withoutEnd2
주어진 문자열의 가장 앞글자와 끝글자를 제외해 출력해라.
public String withouEnd2(String str) {
if(str.length()>2){
return str.substring(1,str.length()-1);
}
return "";
}
15. middleTwo
주어진 문자열의 가운데 두글자를 출력해라.
public String middleTwo(String str) {
return str.substring(str.length()/2 -1, str.length()/2 +1);
}
16. endsLy
주어진 문자열 끝이 "ly"로 끝나면 true를 반환해라 - 2가지 방법!
public boolean endsLy(String str) {
return java.util.regex.Pattern.matches(".*?ly",str);
}
public boolean endsLy(String str) {
if(str.length() >= 2){
if(str.charAt(str.length()-2) == 'l' && str.charAt(str.length()-1) == 'y'){
return true;
}
}
return false;
}
17. nTwice
주어진 문자열을 문자열 앞 n만큼 + 문자열 뒤 n만큼, 입력받은 정수형 n만큼 앞뒤를 잘라 출력해라
(ex. str: Hello, word : 2 => Helo)
public String nTwice(String str, int n) {
return str.substring(0,n) + str.substring(str.length()-n);
}
18. twoChar
주어진 문자열을 주어진 정수형부터 끝까지 출력해라. 만약 주어진 정수형이 주어진 문자열길이보다 작거나 더 크면, 주어진 문자열 앞 2개의 문자들을 출력해라.
public String twoChar(String str, int index) {
if((str.length()-2 < index) || (index < 0)){
return str.substring(0,2);
}
return str.substring(index, index+2);
}
19. middleThree
주어진 홀수길이의 문자열의 가운데 3개문자들을 출력해라.(str: candy => and)
public String middleThree(String str) {
return str.substring(str.length()/2-1, str.length()/2+2);
}
20. hasBad
주어진 문자열에서 인덱스 길이 0부터 혹은 1부터 시작해 "bad"문자열 나타난다면 true반환. - 2가지방법
public boolean hasBad(String str) {
return java.util.regex.Pattern.matches(".?bad.*?",str);
}
public boolean hasBad(String str) {
String s = "";
String s2 = "";
if(str.length() >= 3 ){
s = str.substring(0,3);
}
if(str.length() > 3) {
s2 = str.substring(1,4);
}
return s.equals("bad") || s2.equals("bad");
}
21. atFirst
주어진 문자열로 길이가 2인 문자열을 만들어라. 길이가 2이상이면 앞 2자리를 반환하고, 2보다 작은 문자열의 경우 @으로 채워서 반환해라.
public String atFirst(String str) {
if(str.length() == 0){
return "@@";
}
if(str.length() < 2){
return str + "@";
}
return str.substring(0,2);
}
22. lastChars
주어진 두개의 문자열 a,b에서 a문자열의 가장 앞글자와 b문자열 가장 뒷글자를 합쳐 출력해라.
만약 a나 b가 비어있는 문자열이라면 @을 채워서 출력해라.
public String lastChars(String a, String b) {
if(a.equals("") || b.equals("")){
if(a.equals("") && b.equals("")){
return "@@";
}else if(a.equals("")){
return "@" + b.charAt(b.length()-1);
}else{
return a.substring(0,1) + "@";
}
}
return a.substring(0,1) + b.charAt(b.length()-1);
}
23. conCat
주어진 두개의 문자열을 합쳐라. 만약 첫번째 문자열의 마지막 문자와 두번째 문자열의 첫번째 문자가 같은 문자라면, 같은 문자중 하나만 출력해서 합쳐라.
public String conCat(String a, String b) {
if(!a.equals("") && !b.equals("")){
if(a.substring(a.length()-1).equals(b.substring(0,1))){
return a + b.substring(1,b.length());
}
}
return a+b;
}
24. lastTwo
주어진 문자열의 마지막 2개의 문자들을 서로 바꿔서 출력해라. ex)"coding" -> "codign"
public String lastTwo(String str) {
if(str.length() > 2){
return str.substring(0,str.length()-2) + str.charAt(str.length()-1) + str.charAt(str.length()-2);
}
if(str.length() == 2){
return str.substring(str.length()-1) + str.charAt(str.length()-2);
}
return str;
}
25. seeClolor
주어진문자열이 "red"나 "blue"로 시작한다면 색깔 문자열을 출력하고, 그렇지 않으면 빈 문자열 출력해라
public String seeColor(String str) {
if(str.length() > 2){
if(str.substring(0,3).equals("red")){
return "red";
}
}
if(str.length() > 3){
if(str.substring(0,4).equals("blue")){
return "blue";
}
}
return "";
}
26. frontAgain
주어진 문자열의 처음 2번째문자들과 끝에서 2번째 문자들이 같으면 true를 출력
public boolean frontAgain(String str) {
if(str.length()>1){
if(str.substring(0,2).equals(str.substring(str.length()-2))){
return true;
}
}
return false;
}
27. minCat
두개의 문자열 a,b가 주어지면 둘중에 작은 문자열 길이 만큼 양쪽의 문자열을 출력, but 길이가 더 작은 문자열은 전부 출력하고, 길이가 긴 문자열은 문자열앞쪽부터x, 뒤쪽기준으로 길이가 짧은 문자열 길이만큼 출력해라.
ex) a : "hello", b : "hi" ==> "lohi"
public String minCat(String a, String b) {
if(a.length() > b.length()){
return a.substring(a.length()-b.length()) + b;
}
if(b.length() > a.length()){
return a + b.substring(b.length()-a.length());
}
return "";
}
28. extraFront
주어진 문자열의 앞 2글자를 세번 반복해서 출력해라. 만약 주어진 문자열의 길이가 2보다 작다면 그 문자열을 3번 반복해서 출력해라.
public String extraFront(String str) {
if(str.length() > 1){
return str.substring(0,2) + str.substring(0,2) + str.substring(0,2);
}
return str + str + str;
}
29. without2
주어진문자열의 앞 2글자 뒤2글자가 같다면, 시작 2개문자들 삭제해 출력해라. 만약 문자열길이가 2글자면 앞에서 2글자 뒤에서 2글자 같아 overlap되기때문에 ""빈문자열을 출력해라. 그외의 것들은 변환하지 말고 그대로 출력해라.
public String without2(String str) {
if((str.length() > 2) && str.substring(0,2).equals(str.substring(str.length()-2))){
return str.substring(2);
}
if(str.length() == 2){
return "";
}
return str;
}
30. deFront
주어진 문자열의 앞 2개의 문자들을 제외하고 출력해라. 단, 첫번째 문자가 'a'면 첫번째 문자 제외하지말것, 두번째 문자가 'b'이면 두번째 문자 제외하지 말것.
ex)str: java -> va, str: away -> aay , str: abc -> abc, str: xbc -> bc
public String deFront(String str) {
if(str.charAt(0) == 'a' || str.charAt(1)== 'b'){
if(str.charAt(0) != 'a'){
return str.substring(1);
}else if(str.charAt(1) != 'b'){
return str.charAt(0) + str.substring(2);
}
return str;
}
return str.substring(2);
}
31. startWord
두개의 str과 word문자열이 주어진다. 두개의 문자열 중 짧은 문자열이 긴문자열과 같다면 match라고 함. (but여기서 문자열중 첫번째 문자는 달라도 같다고 함.) 만약 두개의 문자열에서 match일어나면 긴문자열의 match한 부분 출력.
만약 match가 일어나지 않았다면 ""빈 문자열 출력.
ex) str : hip, word : xip --> hip (match일어남), str : hippo, word : hi --> hi
public String startWord(String str, String word) {
if(str.length()>= word.length()){
for(int i = 0; i < word.length(); i++){
if(str.substring(1,word.length()).equals(word.substring(1))){
return str.substring(0,word.length());
}
}
}
return "";
}
32. withoutX
주어진 문자열에서 만약 맨앞 혹은 맨뒤 문자가 'x'라면, 맨앞 혹은 맨뒤 'x'문자 제외해서 출력해라. 그렇지 않으면 그대로 문자열을 출력해라.
public String withoutX(String str) {
if(str.length() > 1){
if(str.charAt(0) == 'x'){
if(str.charAt(str.length()-1) == 'x'){
return str.substring(1,str.length()-1);
}else{
return str.substring(1);
}
}
if(str.charAt(str.length()-1) == 'x'){
return str.substring(0,str.length()-1);
}else{
return str;
}
}
return "";
}
33. withoutX2
만약 주어진 문자열에서 처음 문자가 'x'거나 2번째 문자가 'x' 혹은 둘다 'x'일경우 'x'문자는 제외하고 문자열을 출력할것.
public String withoutX2(String str) {
if(str.length() != 0){
if(str.charAt(0) == 'x'){
if((str.length() > 1) && (str.charAt(1) == 'x')){
return str.substring(2);
}else{
return str.substring(1);
}
}
if((str.length() > 1) && (str.charAt(1) == 'x')){
return str.charAt(0) + str.substring(2);
}
}
return str;
}
'Algorithm > CODINGBAT[Java]' 카테고리의 다른 글
CodinBat Array-1 (0) | 2021.10.04 |
---|---|
CodingBat Map-2 (0) | 2021.09.28 |
CodingBat Map-1 (0) | 2021.09.28 |
CodingBat Warmup-2 (0) | 2021.09.27 |
CodingBat Warmup-1 (0) | 2021.09.27 |