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

2022/4/23 20:13:00

本文主要是介绍【练习记录】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;
    
}


这篇关于【练习记录】2022年春夏笔试-C++后端的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程