今天在OJ上刷到调换位置
那么我就来分享一下我的解题思路和代码
图片:
解题思路+步骤源码
声明:仅供参考!
这种方法好理解,但是代码多,方法就是不要把这个题想复杂了,我们人类在做这种题的时候是先找逗号,再去看看逗号两边的内容。同样机器人也可以运用这种方法来解决问题。
1、定义+输入字符串
开始我们先定义一个字符串a,让它输入字符串:
#include<bits/stdc++.h>
using namespace std;
string a;
int main(){
cin>>a;
return 0;
}由于输入字符串不需要输入空格,所以我们不需要用getline。
2、循环和判断
用while或for循环都可以,怎么方便怎么来。重复执行将a[i]的值存到一个数组里直到当a[i]等于','时记录当前(逗号)的位置并break跳出循环,循环次数是字符串的长度(while不要用字符串长度,后面直接判断就行了)。这里要定义一个新变量,名字随便,我这里是n。
#include<bits/stdc++.h>
using namespace std;
string a;
int n,b;
char c[1000005];
int main(){
cin>>a;
for(int i=0;i<=a.length();i++){
if(a[i]==','){
n = i;
break;
}else{
c[i] = char(a[i]);
}
}
return 0;
}到了目前为止,逗号前面的内容已经记到数组c中了。
3、输出逗号后面的内容
到了这一步,就非常简单了,我们之前已经找到逗号的位置了,再这个基础上+1,就是逗号后面内容的第一个字符,随后我们直接再来一个for循环,判断条件是到末尾结束,把这个字符串直接输出。
#include<bits/stdc++.h>
using namespace std;
string a;
int n,b;
char c[1000005];
int main(){
cin>>a;
for(int i=0;i<=a.length();i++){
if(a[i]==','){
n = i;
break;
}else{
c[i] = char(a[i]);
}
}
for(int i=n+1;i<=a.length();i++){
cout<<a[i];
}
return 0;
}4、 输出逗号、逗号前面的内容
直接循环输出[i]就行,判断条件是大于等于逗号的位置( n ) - 1。但不要忘记先输出逗号哦。
#include<bits/stdc++.h>
using namespace std;
string a;
int n,b;
char c[1000005];
int main(){
cin>>a;
for(int i=0;i<=a.length();i++){
if(a[i]==','){
n = i;
break;
}else{
c[i] = char(a[i]);
}
}
for(int i=n+1;i<=a.length();i++){
cout<<a[i];
}
cout<<",";
for(int i=0;i<=n-1;i++){
cout<<c[i];
}
return 0;
}到此为止,恭喜你的OJ上又通过了一道题!!!
1 条评论
真不错