【C++ • STL • 力扣】详解string相关OJ

03-04 10142阅读 0评论

文章目录

  • 1、仅仅翻转字母
  • 2、字符串中的第一个唯一字符
  • 3、字符串里最后一个单词的长度
  • 4、验证一个字符串是否是回文
  • 5、字符串相加
  • 总结

    ヾ(๑╹◡╹)ノ" 人总要为过去的懒惰而付出代价 ヾ(๑╹◡╹)ノ"

    【C++ • STL 力扣】详解string相关OJ 第1张


    1、仅仅翻转字母

    力扣链接

    代码1展示:【下标】

    class Solution {
    bool isLetter(const char& c)
    {
        if (c >= 'a' && c = 'A' && c 
            int left = 0;
            int right = s.size() - 1;
            while (left = 0 ? num2[end2] - '0' : 0;
                int ret = val1 + val2 + carry;
                if (ret >= 10)
                {
                    ret -= 10;
                    carry = 1;
                }
                else
                {
                    carry = 0;
                }
                s.insert(s.begin(), ret + '0');
                end1--;
                end2--;
            }
            if (carry == 1)
            {
                s.insert(s.begin(), '1');
            }
            return s;
        }
    };
    

    这个代码,使用头插,时间复杂度为O(N^2),算法不是最优的

    代码2展示:

    class Solution {
    public:
        string addStrings(string num1, string num2) 
        {
            int end1 = num1.size() - 1;
            int end2 = num2.size() - 1;
            int carry = 0;//进位
            string s;
            while (end1 >= 0 || end2 >= 0)
            {
                //字符转换为数字
                int val1 = end1 >= 0 ? num1[end1] - '0' : 0;
                int val2 = end2 >= 0 ? num2[end2] - '0' : 0;
                int ret = val1 + val2 + carry;
                if (ret >= 10)
                {
                    ret -= 10;
                    carry = 1;
                }
                else
                {
                    carry = 0;
                }
                //s.insert(s.begin(), ret + '0');
                s += (ret + '0');
                end1--;
                end2--;
            }
            if (carry == 1)
            {
                s += '1';
                //s.insert(s.begin(), '1');
            }
            reverse(s.begin(), s. end());
            return s;
        }
    };
    

    思路:倒着进行加法运算,当两个字符串的位数不一样的时候,位数少的前面进行补0【两个字符串都结束的时候才可以认为结束。【注意下标问为0的位置的进位】】

    知识点:大数运算(当一个数字非常大的时候,可以用字符串的形式进行存放),字符串是不能进行加减运算的。此时就需要我们写代码。


    总结

    以上就是今天要讲的内容,本文详细的介绍了string的OJ题。希望给友友们带来帮助!


免责声明
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明。
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所
提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何
损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在
转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并白负版权等法律责任。

手机扫描二维码访问

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,10142人围观)

还没有评论,来说两句吧...

目录[+]