paizaラーニングのレベルアップ問題集「文字列処理メニュー」からの出典です。
paiza.jp
C++による「文字列処理メニュー」問題集と、それらの提出コードの解答例です。
僕が作成、提出したコードは、以下のとおりです。
・C : 日時データの変換その2
/* C++による「文字列処理メニュー」問題集(5) C : 日時データの変換その2 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ string s,s1; cin>>s>>s1; for(int i=0;i<s.size();i++){ if(s[i]=='/'){ cout<<endl; }else{ cout<<s[i]; } } cout<<endl; for(int i=0;i<s1.size();i++){ if(s1[i]==':'){ cout<<endl; }else{ cout<<s1[i]; } } return 0; }
・C : 数値判定
/* C++による「文字列処理メニュー」問題集(5) C : 数値判定 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ string s; cin>>s; for(int i=0;i<s.size();i++){ if(s[i]!='0' && s[i]!='1' && s[i]!='2' && s[i]!='3' && s[i]!='4' && s[i]!='5' && s[i]!='6' && s[i]!='7' && s[i]!='8' && s[i]!='9'){ cout<<"NO"<<endl; return 0; } } cout<<"YES"<<endl; return 0; }
・C : 重複の削除
/* C++による「文字列処理メニュー」問題集(5) C : 重複の削除 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ string s; cin>>s; int c0=0,c1=0,c2=0,c3=0,c4=0; int c5=0,c6=0,c7=0,c8=0,c9=0; for(int i=0;i<s.size();i++){ if(s[i]=='0'){ c0++; if(c0<2){ cout<<s[i]; } }else if(s[i]=='1'){ c1++; if(c1<2){ cout<<s[i]; } }else if(s[i]=='2'){ c2++; if(c2<2){ cout<<s[i]; } }else if(s[i]=='3'){ c3++; if(c3<2){ cout<<s[i]; } }else if(s[i]=='4'){ c4++; if(c4<2){ cout<<s[i]; } }else if(s[i]=='5'){ c5++; if(c5<2){ cout<<s[i]; } }else if(s[i]=='6'){ c6++; if(c6<2){ cout<<s[i]; } }else if(s[i]=='7'){ c7++; if(c7<2){ cout<<s[i]; } }else if(s[i]=='8'){ c8++; if(c8<2){ cout<<s[i]; } }else if(s[i]=='9'){ c9++; if(c9<2){ cout<<s[i]; } } } cout<<endl; return 0; }
・C : パスワード作成
/* C++による「文字列処理メニュー」問題集(5) C : パスワード作成 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ int N,Q; cin>>N>>Q; vector<int> n(Q); char c[Q],C,ans[N]; for(int i=0;i<Q;i++){ cin>>n[i]>>c[i]; } cin>>C; for(int i=0;i<N;i++){ ans[i]=C; } for(int i=0;i<Q;i++){ ans[n[i]-1]=c[i]; } for(int i=0;i<N;i++){ cout<<ans[i]; } cout<<endl; return 0; }
・C : 表記の訂正
/* C++による「文字列処理メニュー」問題集(5) C : 表記の訂正 https://paiza.jp/works/mondai 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ string s; cin>>s; int dc=0,d; for(int i=0;i<s.size();i++){ if(s[i]=='.'){ dc++; if(dc==1){ d=i; } } } if(dc==0){ for(int i=0;i<s.size();i++){ if(s[i]!='0'){ for(int j=i;j<s.size();j++){ cout<<s[j]; } cout<<endl; return 0; } } }else if(dc==1){ if(s[d-1]=='0'){ int zc=0,zc0=0,zc1=0; for(int i=0;i<s.size();i++){ if(s[i]=='0'){ zc0++; }else{ break; } } for(int i=0;i<s.size();i++){ if(s[i]=='0' && s[i+1]!='.' && s[i+2]=='.'){ zc++; break; }else if(s[i]=='0'){ zc++; } } for(int i=s.size()-1;i>=0;i--){ if(s[i]=='0'){ zc1++; }else{ break; } } for(int i=zc0-zc;i<s.size()-zc1;i++){ cout<<s[i]; } }else{ int zc=0,zc0,zc1=0; for(int i=0;i<s.size();i++){ zc++; if(i+1==d){ break; } } zc0=zc; for(int i=0;i<zc0;i++){ if(s[i]!='0'){ zc--; } } for(int i=s.size()-1;i>=0;i--){ if(s[i]=='0'){ zc1++; }else{ break; } } for(int i=zc+1;i<s.size()-zc1;i++){ cout<<s[i]; } } cout<<endl; return 0; }else if(dc>=2){ int dc1=0,zc=0,zc0=0,zc1=0; for(int i=0;i<s.size();i++){ if(s[i]=='.'){ dc1++; if(dc1>=2){ s.erase(i,1); } } } if(s[d-1]=='0'){ int zc=0,zc0=0,zc1=0; for(int i=0;i<s.size();i++){ if(s[i]=='0'){ zc0++; }else{ break; } } for(int i=0;i<s.size();i++){ if(s[i]=='0' && s[i+1]!='.' && s[i+2]=='.'){ zc++; break; }else if(s[i]=='0'){ zc++; } } for(int i=s.size()-1;i>=0;i--){ if(s[i]=='0'){ zc1++; }else{ break; } } for(int i=zc0-zc;i<s.size()-zc1;i++){ cout<<s[i]; } }else{ int zc=0,zc0,zc1=0; for(int i=0;i<s.size();i++){ zc++; if(i+1==d){ break; } } zc0=zc; for(int i=0;i<zc0;i++){ if(s[i]!='0'){ zc--; } } for(int i=s.size()-1;i>=0;i--){ if(s[i]=='0'){ zc1++; }else{ break; } } for(int i=zc;i<s.size()-zc1;i++){ cout<<s[i]; } } cout<<endl; return 0; } }
paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。