晚上在CSDN上看到编程挑战比赛,于是就好奇的打开页面,打算参加,第一题是关于字符串的问题,原题为:
给定两个字符串,仅由小写字母组成,它们包含了相同字符。 求把第一个字符串变成第二个字符串的最小操作次数,且每次操作只能对第一个字符串中的某个字符移动到此字符串中的开头。 例如给定两个字符串“abcd" "bcad" ,输出:2,因为需要操作2次才能把"abcd"变成“bcad" ,方法是:abcd->cabd->bcad。
看了题目后第一想法就是用C++来写程序,字符串用string表示,下面就是算法了,给定了两个字符串,以第二个为标准,移动第一个来匹配第二个,就相当于给定一个排列,使第一个经过移序后与标准排序更接近,也就是说如果第二个的逆序越来越少,则就越来越接近标准排序。