• leetcode 415 字符串相加


    简介

    简单题, 按照正常人的思路即可

    code

    C++代码写复杂了, 应该, 补0的话可以省去判断谁是长字符串谁是短字符串

    class Solution {
    public:
        string addStrings(string num1, string num2) {
            reverse(num1.begin(), num1.end());
            reverse(num2.begin(), num2.end());
            int n1 = num1.size();
            int n2 = num2.size();
            vector<int> c;
            if(n1 >= n2) {
                c.resize(n1+1, 0);
                for(int i=0; i<n2; i++){
                    if(c[i] + num1[i] + num2[i] - '0' - '0' > 9){
                        c[i] = c[i] + num1[i] + num2[i] - '0' - '0' - 10;
                        c[i+1] += 1; 
                    }else{
                        c[i] = c[i] + num1[i] + num2[i] - '0' - '0';
                    }
                }
                for(int i=n2; i<n1; i++) {
                    if(c[i] + num1[i]   - '0' > 9){
                        c[i] = c[i] + num1[i] - '0' - 10;
                        c[i+1] += 1; 
                    }else{
                        c[i] = c[i] + num1[i] - '0';
                    }
                }
            }else{
                
                c.resize(n2+1, 0);
                for(int i=0; i<n1; i++){
                    if(c[i] + num1[i] + num2[i] - '0' - '0' > 9){
                        c[i] = c[i] + num1[i] + num2[i] - '0' - '0' - 10;
                        c[i+1] += 1; 
                    }else{
                        c[i] = c[i] + num1[i] + num2[i] - '0' - '0';
                    }
                }
                for(int i=n1; i<n2; i++) {
                    if(c[i] + num2[i]   - '0' > 9){
                        c[i] = c[i] + num2[i] - '0' - 10;
                        c[i+1] += 1; 
                    }else{
                        c[i] = c[i] + num2[i] - '0';
                    }
                }
            }
            string rlt;
            for(int i=0; i<c.size(); i++){
                if(i == c.size() - 1) {
                    if(c[i] == 0) {
                        continue;
                    }
                }
                rlt += '0' + c[i];
            }
            reverse(rlt.begin(), rlt.end());
            return rlt;
        }
    };
    
    class Solution {
        public String addStrings(String num1, String num2) {
            int i = num1.length()- 1, j = num2.length() - 1, add = 0;
            StringBuffer ans = new StringBuffer();
            while(i >= 0 || j >=0 || add != 0) {
                int x = i >=0 ? num1.charAt(i) - '0' : 0;
                int y = j >= 0? num2.charAt(j) - '0' : 0;
                int result = x + y + add;
                ans.append(result % 10);
                add = result / 10;
                i--;
                j--;
            }
            ans.reverse();
            return ans.toString();
        }
    }
    
    Hope is a good thing,maybe the best of things,and no good thing ever dies.----------- Andy Dufresne
  • 相关阅读:
    【转】几种Java序列化方式的实现
    【转】Java泛型方法
    【转】java序列化一定要应该注意的6个事项!
    [转]Android APK签名原理及方法
    [转]Android中内存占用的含义:(VSS,PSS,RSS,USS)
    红黑树的C语言实现
    Btree算法的C语言实现
    C++之迭代器失效总结
    tcpdump抓包工具用法说明
    setsockopt函数功能及参数详解
  • 原文地址:https://www.cnblogs.com/eat-too-much/p/14774217.html
Copyright © 2020-2023  润新知