-
문자 수정, 문자 삭제_220716데일리 codeup/문자열 2022. 7. 16. 15:11
문자 수정
a로 채워넣기
문자열이 주어지면, 앞에서 2번째 원소와 뒤에서 2번째 원소를 문자 'a'로 대체한 이후의 문자열을 출력하는 프로그램을 작성해보세요.
#include <iostream> #include <string> using namespace std; int main(){ string s; cin >> s; s[1] = 'a'; s[s.length()-2] = 'a'; cout<< s; return 0; }
문자 교체하기
알파벳으로 이루어진 문자열이 두 개 주어지면 첫 번째 문자열의 앞부분 두 글자를 복사해 두 번째 문자열의 앞부분 두 글자로 교체한 후 두 번째 문자열만 출력하는 프로그램을 작성해보세요. 단, 주어지는 문자열은 최소 두 글자 이상으로 이루어져 있습니다.
#include <iostream> #include <string> using namespace std; int main(){ string s,t; cin >> s >> t; t[0] = s[0]; t[1] = s[1]; cout<< t; return 0; }
첫 번째와 두 번째 교환
소문자 알파벳으로만 이루어진 문자열이 한 개 주어졌을 때, 첫 번째 문자와 같은 문자는 모두 두 번째 문자로 바꾸고, 두 번째 문자와 같은 문자는 모두 첫 번째 문자로 바꾸어줍니다.
#include <iostream> #include <string> using namespace std; int main(){ string s; cin >> s; char t1 = s[0], t2 = s[1]; for(int i=0;i<s.length();i++){ if(s[i] == t1) s[i] = t2; else if(s[i] == t2) s[i] = t1; } cout<< s; return 0; }
문자열 놀이
문자열 s와 q개의 질의가 주어졌을 때 각 질의를 수행하는 프로그램을 작성해보세요. 단, 질의를 순서대로 수행해야 하며, 문자열은 질의에 따라 계속 변합니다. 질의의 종류는 다음과 같습니다.
1 a b
a번째 문자와 b번째 문자를 교환한 뒤 출력합니다.
2 a b
문자 a를 전부 문자 b로 변경한 뒤 출력합니다.
#include <iostream> #include <string> using namespace std; int main(){ string s; int q,num,a,b; char tmp,t1,t2; cin >> s >> q; for(int i=0;i<q;i++){ cin >> num; if(num == 1){ cin >> a >> b; tmp = s[a-1]; s[a-1] = s[b-1]; s[b-1] = tmp; } else{ cin >> t1 >> t2; for(int j=0;j<s.length();j++){ if(s[j]==t1) s[j] = t2; } } cout<<s<<endl; } return 0; }
두 번째를 첫 번째로
문자열이 주어지면, 문자열 내에서 두 번째 문자와 같은 문자들을 모두 첫 번째 문자로 바꾸어 출력하는 프로그램을 작성해보세요.
#include <iostream> #include <string> using namespace std; int main(){ string s; cin >> s; char t1 = s[1]; for(int i=1;i<s.length();i++){ if(s[i] == t1) s[i] = s[0]; } cout<<s; return 0; }
문자 삭제
문자열 내 문자 제거
1.substr
함수basic_string substr(size_type pos = 0, size_type count = npos) const;
2.
erase()
함수basic_string& erase(size_type index = 0, size_type count = npos); iterator erase(const_iterator position); iterator erase(const_iterator first, const_iterator last);
양옆 문자 제거하기
문자열이 주어지면, 앞에서 2번째 원소와 뒤에서 2번째 원소를 제거한 후의 문자열을 출력하는 프로그램을 작성해보세요.
#include <iostream> #include <string> using namespace std; int main(){ string s; cin >> s; s.erase(1,1); s.erase(s.length()-2,1); cout<<s; return 0; }
문자 제거하기
알파벳으로 이루어진 문자열과 정수가 주어지면, 문자열에서 정수에 해당하는 위치의 문자를 제거하고 출력하는 작업을 반복하다가 문자 1개가 남으면 종료하는 프로그램을 작성해보세요. 만약 주어진 정수가 문자열의 길이 이상이면 마지막 문자를 제거합니다. 위치는 0번부터 주어진다고 가정합니다.
#include <iostream> #include <string> using namespace std; int main(){ string s; cin >> s; int a,len = s.length(); while(len>1){ cin >> a; if(a>=len) a = len-1; s.erase(a,1); cout<<s<<endl; len --; } return 0; }
문자열 계속 지우기
문자열 A와 문자열 B가 주어지면 문자열 A의 부분문자열 중 가장 앞에 등장하는 B와 같은 문자열을 찾아 지우려고 합니다. 지우고 난 후 떨어져있는 A의 문자열들을 다시 붙여 만들어진 새로운 문자열의 부분 문자열에 B가 없을 때까지 지우는 것을 반복합니다.
예를 들어 문자열 A가 baabba, B가 ab라면 다음의 과정을 따르게 됩니다.
1.A의 3번째 위치에서 시작하여 4번째 위치에서 끝나는 부분 문자열이 최초로 B와 일치하는 문자열이므로 해당 문자열을 A에서 삭제합니다. baabba → baba
2.새로 만들어진 문자열 baba에서 2번째 위치에서 시작하여 3번째 위치에서 끝나는 부분 문자열이 최초로 B와 일치하는 문자열이므로 해당 문자열을 삭제합니다. baba → ba
3.남은 문자열 ba의 연속 부분문자열 중 문자열 B와 일치하는 문자열이 존재하지 않으므로 최종 결과는 ba가 됩니다.
최종적으로 남게 된 문자열을 출력하는 프로그램을 작성해보세요.
#include <iostream> #include <string> using namespace std; int main(){ string a,b; int cnt = 1; cin >> a >> b; int len_a = a.length(), len_b = b.length(); while(cnt > 0){ cnt = 0; for(int i=0;i<=len_a-len_b;i++){ if(a.substr(i,len_b).compare(b)==0){ a.erase(i,len_b); cnt ++; len_a -= len_b; } } } cout<<a; return 0; }
e 제거하기
문자열이 주어졌을 때, 가장 앞에 있는 문자 e 를 제거한 결과를 출력하는 프로그램을 작성해보세요.
1 ≤ 문자열의 길이 ≤ 100
#include <iostream> #include <string> using namespace std; int main(){ string a; cin >> a; for(int i=0;i<a.length();i++){ if(a[i]=='e'){ a.erase(i,1); break; } } cout<<a; return 0; }
'데일리 codeup > 문자열' 카테고리의 다른 글
아스키(ASCII)코드, 대소문자 변환_220716 (0) 2022.07.16 문자열 밀기_220716 (0) 2022.07.16 문자열 concat, 문자열 찾기_220714 (0) 2022.07.14 문자열 순회하기_220714 (0) 2022.07.14 문자열 리스트 관리_220713 (0) 2022.07.13