今天在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上又通过了一道题!!!

最后修改:2025 年 11 月 23 日
如果觉得我的文章对你有用,请随意赞赏