zoukankan      html  css  js  c++  java
  • 英雄会 高校俱乐部 最少操作次数

    题目详细:

              给定两个字符串,仅由小写字母组成,它们包含了相同字符。 求把第一个字符串变成第二个字符串的最小操作次数,且每次操作只能对第一个字符串中的某个字符移动到此字符串中的开头。 例如给定两个字符串“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 //提示:自动阅卷结束唯一标识,请勿删除或增加。
    



            

  • 相关阅读:
    DNS欺骗&嗅探监听
    linux下的ARP攻击(kali)
    隐匿攻击
    跨边界传输之反弹shell
    跨边界传输之内网代理
    跨边界传输之端口转发
    权限维持
    内网提权-服务篇
    内网提权-系统篇
    Laxcus大数据管理系统2.0(14)- 后记
  • 原文地址:https://www.cnblogs.com/dengyaolong/p/3697224.html
Copyright © 2011-2022 走看看