zoukankan      html  css  js  c++  java
  • [面试编程题]算法基础-字符移位

    错误代码

    #include<iostream>
    #include<string>
    using namespace std;
    bool isLow(char c)
    {
        if( (c>='A') && (c<='Z'))
            return false;
        else 
            return true;
    }
    bool isCap(char c)
    {
        return !isLow(c);    
    }
    
    int main()
    {
        string s;
        while(cin>>s)
        {
            int n=s.size();
            int l=0,r=n-1;
            
            while(l<r)
            {
                while(r>=0 && isCap(s[r])) r--;//r最右边的一个小写字母
                while(l<=n-1 && isLow(s[l])) l++;//l指向最左边的大写字母
                if(l<r)
                    swap(s[l],s[r]);
                else 
                    break;
            }
            cout<<s<<endl;
        }
    }

    测试用例

    测试用例:
    hxKLAGLLzPyTxsFsrUnnSKQBHdQQrOyaEYJRgiJbHIDXFcQkFmIhPNKIBfHxXDBdKAvgZiBLVwnlxJAHmttsSJkZhSmQneNVoKoIYZRjPqsrFFaaqZbyNyeRjVKVFrCGdfycidTqbyQcpAtdRGzzBAaKoqybWMOyhrCQdwcRwQQpQavTnAbjriVwxJOrTYJVGYSWzKYeNAGqBzkJLucabNYvyVFxAGKLfqHXNttaqZfncEdTroGMzZnDbvZBBaRbJvuYIvlWrKaaGrvtyxrsCUOqxdwCrmVEeDrLKZKFJVRmrLsmbmOGUJyfdZIrFhuSwJQGRTYMLxKQNMaCavatlQIRZmFQvyWgQTVENxUcPKQCaUQbjyfaNuwoNdTBNldgrtPUcQodqsuJOdDpUczJWCZaasDdEYJkvituMHrCmZQSlRjIefVisatIUtfxBeKnHPyvWUKzRliFsYWgeXogiEgXDbfxAybwFuqFyEvjfIHEPDPKqEiGUtZhdDIDBGKpvBFyqHeEEhAToAbqHEpIdIhIGBtWjGHiQRctZxQQYkfFoWUbqZyIcjRPQBilHrnqNBzFmoRUYCSrGkawJCcOrMceegISpIpSGVjbngWVMTYtGoAlQFPFyOFAxndJZNfKDTwFIxisKTjyjchidXpYgLfoBOLriuIAHmAbQwoHBgbdUYBHlDQGZJASsHszOEPthLVnYbNqWegmONexfdsTVYHgtDmlyugefOBsqmgNDBoxkkhVHfvrYooVOyxDJQJLjYSngksbTopoPJFsKQzHePLukXyYTYCeW
    对应输出应该为:
    hxzyxssrnndryagibckmhfxdvgiwnlxmttskhmneoojqsraaqbyyejrdfycidqbycptdzzaoqybyhrdwcwpavnbjriwxrzeqzkucabvyxfqttaqfncdroznbvabvuvlraarvtyxrsqxdwrmermrsmbmyfdrhuwxaavatlmvygxcabjyfauwodldgrtcodqsudpczaasdkviturmljefisattfxenyvzlisgeogigbfxybwuqyvjfqithdpvyqehobqpdhtjictxkfobqycjilrnqzmorkawcrceegppjbngtolyxndfwxisjyjchidpgforiumbwogbdlsszthnbqegmexfdsgtmlyugefsqmgoxkkhfvrooyxjngksboposzeukyeKLAGLLPTFUSKQBHQQOEYJRJHIDXFQFIPNKIBHXDBKAZBLVJAHSJZSQNVKIYZRPFFZNRVKVFCGTQARGBAKWMOCQRQQQTAVJOTYJVGYSWKYNAGBJLNYVFAGKLHXNZETGMZDZBBRJYIWKGCUOCVEDLKZKFJVRLOGUJZIFSJQGRTYMLKQNMCQIRZFQWQTVENUPKQCUQNNTBNPUQJODUJWCZDEYJMHCZQSRIVIUBKHPWUKRFYWXEXDAFFEIHEPDPKEGUZDIDBGKBFHEEATAHEIIIGBWGHQRZQQYFWUZIRPQBHNBFRUYCSGJCOMISISGVWVMTYGAQFPFOFAJZNKDTFIKTXYLBOLIAHAQHBUYBHDQGZJASHOEPLVYNWONTVYHDOBNDBVHYVODJQJLYSTPJFKQHPLXYTYCW
    你的输出为:
    hxeykuezzsyoxspsronnbskgndjxryyaoorvgifbhkkxocgkmmqhsfegufyxlmtdgsvgdifxewnlxmgemttsqbknhhmtnezsosoldbgjoqsrwbaaqmbyuyeijrofgrpddfycidiqbyhcpctdjyzzjsaioqybxwfyhrdndwcxwylpoavtngbjrinwxbjrppgeecrczwaekroqmzkzqucabnrvylixjcyqfqbofttaqkfncxdtrocizjntbvhdpaqbbvuohvlerqaayrvtyxrsvpdqxdwhrmtieqrfjvyquwbmrysmbmxfbgyfdigrohuewgsilzvynxexftatavatlasifmejvylgmrutixvckdsaaazbjyfacuwopddusldgrtqdcoQUPNBJOTDNUNQJWCZUCQDKEYJPUNEVMHTCQZQSWRQIFZVRIQCIUMNQBKKLHPMYWUKTRRGFQYWJSXFIZEJXDUGOALRVFJFFKEZKLIHEPDPKDEEGUVZCODIDBGKUCBFGKHWEEIATYAJRHEBIBIZIGBDWZGHMQRGTZEQQYZNFXWUHLZKIGARPQBFVHYNLNBJFBGRUYCSAGNYKJCWOSMYGVJISYITSGVOJVAWVMTYTGQAQQFPFQOFARQCJZNOKDTMFIWKAKTBGRAQTGXCYFLVKBOLVRNIAHZAFQFPHBRZYUYBHIDQGZJASKHVNOEPQSLVZYJNSWHAJONVLBZATVYHKBDDXHBIKNOBPIFQNDBFXDIHVHJRJYYEVOOQDJQJLQYSHBQKSTUFTPJFPKQLHLPLGAXLYTYCKW
  • 相关阅读:
    《C++ 并发编程》- 第1章 你好,C++的并发世界
    30分钟,让你成为一个更好的程序员
    程序员技术练级攻略
    谈新技术学习方法-如何学习一门新技术新编程语言
    计算机科学中最重要的32个算法
    程序员学习能力提升三要素
    一位在MIT教数学的老师总结了十条经验
    学习算法之路
    十个顶级的C语言资源助你成为优秀的程序员
    Linux中LoadAverage分析
  • 原文地址:https://www.cnblogs.com/learning-c/p/5700773.html
Copyright © 2011-2022 走看看