编程语言
首页 > 编程语言> > 【练习记录】2022年春夏笔试-C++后端

【练习记录】2022年春夏笔试-C++后端

作者:互联网

字符串冒泡排序

有一个字符串,组成只有CJ两个字母,每次只能交换相邻两个的次序,最少多少次可以让CJ交替出现?
输入:
整数n(1≤n≤10^6)
输出:最少排序次数,如果不能排序输出-1
样例输入:
4
CCJJ
样例输出:
1

分析:

一道冒泡排序的典型问题。注意①上下限,②下标一起变(当然用哈希表应该是更合理的)

#include <iostream>
#include <string>
using namespace std;
int main(){
    long long n;
    cin>>n;
	
    string str;
    cin>>str;
  /* cout<<str<<endl;*/
    
    int S = 0;
    for(int i = 1; i < str.length();i++){
        if (str[i-1]==str[i]){
            for(int j = i+1; j< str.length(); j++){
                if (str[j] != str[i]){
                    swap(str[j],str[i]);
                    S++;
                }
            }
        }
    }
   int kk = 1;
   for(int i = 1; i < str.length();i++){
       if(str[i] == str[i-1])
           kk = 0;
   }  
   if(kk==0)cout<<-1<<endl;
   else   cout<<S<<endl;
    
    return 0;
    
}

标签:CJ,2022,年春夏,C++,样例,冒泡排序,long,str,include
来源: https://www.cnblogs.com/translucent/p/16183339.html