ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 문자열 concat, 문자열 찾기_220714
    데일리 codeup/문자열 2022. 7. 14. 15:29

    문자열 concat


    문자열 추가하기

    알파벳으로 이루어진 문자열이 주어지면 뒤에 'Hello'를 붙여서 저장하고 출력하는 프로그램을 작성해보세요.

    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        string str;
        cin >> str;
        str += "Hello";
        cout<<str;
        return 0;
    }

    문자열 전부 붙이기

    정수 n이 주어지고, n개의 줄에 걸쳐 총 n개의 문자열이 주어질 때, 모든 문자열을 붙여 출력하는 프로그램을 작성해보세요.

    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        int n;
        string tmp, str;
        cin >> n;
        for(int i=0;i<n;i++){
            cin >> tmp;
            str += tmp;
        }
        cout<<str;
        return 0;
    }

    문자열 나누기

    공백과 숫자로만 이루어진 문자열과 그 문자열의 개수가 주어지면 다섯 개의 숫자씩 나누어서 출력하는 프로그램을 작성해보세요.

    입력

    9
    12 34 567 89 23 123 12 312 84

    출력

    12345
    67892
    31231
    23128
    4
    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        int n;
        string tmp, str;
        cin >> n;
        for(int i=0;i<n;i++){
            cin >> tmp;
            str += tmp;
        }
        for(int i=0;i<str.length();i++){
            if(i%5==0 && i!=0)  cout<<endl;
            cout<<str[i];
        }
        return 0;
    }

    두 문자열을 이어붙였을 때

    두 문자열 A, B을 이어붙여서 새로운 문자열 A + B , B + A 을 만들었을 때, 두 문자열이 같은지 비교하는 프로그램을 작성해보세요.

    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        string str1,str2,str3,str4;
        cin>> str1 >> str2;
        str3 = str1 + str2;
        str4 = str2 + str1;
        if(str3 == str4)    cout<<"true";
        else    cout<<"false";
        return 0;
    }

    문자열 찾기

    c++에서는 string 헤더의 substr 함수를 이용하여 다음과 같이 직접 문자열끼리 비교해주는 것이 가능 하다.

    문자열.substr(시작 인덱스, 부분문자열 길이)

    string s = "appleabanana";
    int length = s.length();
    bool exists = false;
    
    for (int i = 0; i < length - 1; i++) {
        if(s.substr(i, 2) == "ab") {
            exists = true;
        }
    }

    c++ 에서는 string 헤더의 find 함수를 이용하면 부분문자열 포함 여부를 간단하게 알 수 있다.
    find 함수가 부분문자열을 찾는데 성공하면 (여러번 나타나면 가장 앞선) 부분문자열 첫 문자의 index를 반환하며, 실패한다면 string::npos 라는 상수를 반환한다.

    string s = "appleabanana";
    bool exists = false;
    
    if (s.find("ab") != string::npos) {
        exists = true;
    }

    특정 문자의 유무

    문자열이 주어지면 문자열 'ee'와 'ab'의 포함여부를 출력하는 프로그램을 작성해보세요.

    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        string str;
        cin >> str;
        bool ee = false, ab = false;
        for(int i=0;i<str.length()-1;i++){
            if(str[i]=='e'&&str[i+1]=='e')  ee = true;
            if(str[i]=='a'&&str[i+1]=='b')  ab = true;
        }
        if(ee)  cout<<"Yes"<<' ';
        else    cout<<"No"<<' ';
        if(ab)  cout<<"Yes"<<' ';
        else    cout<<"No"<<' ';
        return 0;
    }

    문자열의 특정 위치 찾기

    알파벳으로 이루어진 문자열과 문자가 하나가 주어지면 주어진 문자의 위치를 출력하는 프로그램을 작성해보세요. 단, 첫 번째 문자의 위치는 0, 두 번째의 문자의 위치는 1, ... 이렇게 0번부터 세기 시작합니다.

    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        string str;
        char word;
        cin >> str>> word;
        if(str.find(word) != string::npos) cout<<str.find(word);
        else    cout<<"No";
        return 0;
    }

    특정 문자의 등장 횟수

    문자열이 주어지면 주어진 문자열에 'ee', 'eb'가 각각 몇 번씩 나왔는지를 출력하는 프로그램을 작성해보세요.

    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        int n = 0, m = 0;
        string str;
        cin >> str;
        for(int i=0;i<str.length()-1;i++){
            if(str[i]=='e'&&str[i+1]=='e')   n++;
            if(str[i]=='e'&&str[i+1]=='b')   m++;
    
        }
        cout<<n<<' '<<m;
        return 0;
    }

    부분문자열 위치 구하기

    주어진 입력 문자열에 대하여 목적 문자열이 부분 문자열로 존재하는 경우, 부분 문자열의 시작 인덱스를 출력하는 코드를 작성해보세요. 인덱스는 0부터 시작한다고 가정합니다.

    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        string str,obj_str;
        int num,i;
        bool is_same = false;
        cin >> str >> obj_str;
        for(i=0;i<str.length();i++){
            if(str[i]== obj_str[0]){
                is_same = true;
                for(int j=1;j<obj_str.length();j++){
                    if(str[i+j]!=obj_str[j]){
                        is_same = false;
                        break;
                    }
                }
            }
            if(is_same == true){
                break;
            }
        }
        if(is_same == true) cout<<i;
        else    cout<<-1;
        return 0;
    }

    부분 문자열의 개수

    두 문자열 A와 B가 주어졌을 때, 문자열 B가 문자열 A의 부분 문자열로써 등장하는 횟수를 구하는 프로그램을 작성해보세요. 문자열 B의 길이는 항상 2임을 가정하여도 좋습니다.

    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
        string str_a,str_b;
        cin >> str_a >> str_b;
        int cnt = 0;
        for(int i=0;i<str_a.length()-1;i++){
            if(str_a[i]==str_b[0] && str_a[i+1] == str_b[1])    cnt++;
        }
        cout<<cnt;
        return 0;
    }

    댓글

Designed by Tistory.