回复: 2
跳转到指定楼层
上一主题 下一主题
收起左侧

Nuro 无人车公司 phone

全局:

2021(1-3月) 码农类General 硕士 全职@nuro - 网上海投 - 技术电面  | | Pass | 在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
一道 两个 String 相加题

您好!
本帖隐藏的内容需要积分高于 150 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 150 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies


求点大米谢谢

评分

参与人数 1大米 +1 收起 理由
chengyenyang + 1 赞一个

查看全部评分


上一篇:热带雨林-加拿大-ng-1轮VO过经+timeline
下一篇:[蓝鸟] HM面
🔗
xiongxicheng 2021-2-21 08:50:28 | 只看该作者
全局:
请问楼主, 这个问题是只能一位一位地append char不可以integer和string之间互相转换的意思吗
回复

使用道具 举报

🔗
jgao93 2021-2-22 16:40:58 | 只看该作者
全局:
本帖最后由 jgao93 于 2021-2-22 16:44 编辑

写了个C++版本

  1. class Solution {public:
  2.     string addStrings(string num1, string num2) {
  3.         bool neg1 = num1[0] == '-';
  4.         bool neg2 = num2[0] == '-';
  5.         if (neg1) num1 = num1.substr(1);
  6.         if (neg2) num2 = num2.substr(1);
  7.         if (neg1 && neg2) {
  8.             return "-" + Sum(num1, num2, true);
  9.         } else if (!neg1 && !neg2) {
  10.             return Sum(num1, num2, true);
  11.         }
  12.         int m = num1.size(), n = num2.size();
  13.         if (m < n || (m == n && num1[0] < num2[0])) {
  14.             string sum = Sum(num2, num1, false);
  15.             return neg1 ? sum : "-" + sum;
  16.         }
  17.         return Sum(num1, num2, false);
  18.     }
  19. private:
  20.     string Sum(string num1, string num2, bool plus) {
  21.         int m = num1.size(), n = num2.size();
  22.         int i = m - 1, j = n - 1;
  23.         int c = 0;
  24.         string result;
  25.         while (i >= 0 || j >= 0) {
  26.             int a = i >= 0 ? num1[i--] - '0' : 0;
  27.             int b = j >= 0 ? num2[j--] - '0' : 0;
  28.             int sum = plus ? a + b + c : a - b + c;
  29.             if (sum < 0) c = -1, sum += 10;
  30.             else if (sum >= 10) c = 1, sum -= 10;
  31.             else c = 0;
  32.             result.push_back('0' + sum);
  33.         }
  34.         if (c > 0) result.push_back('0' + c);
  35.         while (result.size() > 1 && result.back() == '0') {
  36.             result.pop_back();
  37.         }
  38.         reverse(result.begin(), result.end());
  39.         return result;
  40.     }
  41. };
复制代码

评分

参与人数 1大米 +2 收起 理由
hsierra + 2 给你点个赞!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表