• 英雄会 高校俱乐部 最少操作次数


    题目详细:

              给定两个字符串,仅由小写字母组成,它们包含了相同字符。 求把第一个字符串变成第二个字符串的最小操作次数,且每次操作只能对第一个字符串中的某个字符移动到此字符串中的开头。 例如给定两个字符串“abcd" "bcad" ,输出:2,因为需要操作2次才能把"abcd"变成“bcad" ,方法是:abcd->cabd->bcad。

     分析:

              这是我做的第一题高校俱乐部编程挑战题目,一开始是很不习惯啦。看着这个通过率,还是小小担心。所以想了很久。 

              好了,入正题,其实就是用第二个字符串(记作b),从后到前比较第一个字符串a,直到a的头,如果b当前指向的字符与a当前指向的字符相等,则两个都下标移动,不然a减减,操作数加一(该字符需要移动(但是遍历完到时候移动即可保持所需要的序) )。即有点像找出最长的序列的感觉。

    代码:

    #include <stdio.h>
    #include <iostream>
    #include <string>
    using namespace std;
    class Test {
    public:
        static int getNumber (string   a,string   b)
        {
            int count=0;
            int a_c=a.length()-1;
            int b_c=b.length()-1;
            while(a_c>=0){
              if(a[a_c]==b[b_c]){
                b_c--;
    
              }else{
                  count++;
    
              }
              a_c--;
    
            }
            return count;
        }
    };
    //start 提示:自动阅卷起始唯一标识,请勿删除或增加。
    int main()
    {
        cout<<Test::getNumber("Test","Test")<<endl;
    }
    //end //提示:自动阅卷结束唯一标识,请勿删除或增加。
    



            

  • 相关阅读:
    摄影基础知识(二)
    std::bind
    摄影网站汇总
    std::function
    常用路径说明
    摄影基础知识(一)
    JavaScript 箭头函数:适用与不适用场景
    软帝学院:Java实现的5大排序算法
    软帝学院:用Java编写计算器,代码展示!
    windows环境下运行java的脚本
  • 原文地址:https://www.cnblogs.com/dengyaolong/p/3697224.html
Copyright © 2020-2023  润新知