日志9

去除前导零

详细解释

cpp复制代码size_t start_pos = s.find_first_not_of('0');

  • 功能:使用 find_first_not_of('0') 找到字符串中第一个不是 '0' 的字符的位置索引。
  • 返回值:如果找到这样的字符,返回其在字符串中的索引位置。如果字符串全是 '0' 或为空,返回 string::npos(表示未找到)。
cpp复制代码if (start_pos != string::npos) {
    return s.substr(start_pos);
}

  • 功能:当 start_pos 不等于 string::npos 时,表示字符串中存在非零字符。使用 substr(start_pos) 截取从第一个非零字符到末尾的子字符串,即去掉前导零的部分。
cpp复制代码return "0";

  • 功能:如果 start_pos == string::npos,说明字符串中全是 '0'。此时返回单独的 "0",表示结果是零。

举例分析

输入1:s = "00012345"

cpp复制代码size_t start_pos = s.find_first_not_of('0'); // start_pos = 3
s.substr(start_pos);                        // 返回 "12345"

输入2:s = "0000"

cpp复制代码size_t start_pos = s.find_first_not_of('0'); // start_pos = string::npos
return "0";                                 // 返回 "0"

输入3:s = "123456"

cpp复制代码size_t start_pos = s.find_first_not_of('0'); // start_pos = 0
s.substr(start_pos);                        // 返回 "123456"

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务