利用字符串的查找功能

整数中1出现的次数(从1到n整数中1出现的次数)

http://www.nowcoder.com/questionTerminal/bd7f978302044eee894445e244c7eee6

字符串法:
既然是找1-n中1出现的次数,我们可将1到n的每个整数都转为子符串,然后利用string.find()函数找出每个字符串中字符'1'的个数,然后累加即可。
例如:1转为字符串"1" ,10转为字符串"10", 121 转为字符串"121"(提示 to_string()函数可将其他类型快速转为字符串)

代码实现

class Solution {
public:
    int NumberOf1Between1AndN_Solution(int n)
{
    if(n<=0) return 0;//没啥用严谨一点
    int count=0;//初始化累计1的个数为0
    for(int i=1;i<=n;i++)
    {
        string tem=to_string(i);//将1-n的每一个整数 都转换为字符串类型
        string position;//从第0位开始记录字符串中出现1的位置
        int pos=0;//每次都从字符串的第0位开始查找,直到找完整个字符串
        while((pos<tem.size())&&tem.find('1',pos)!=string::npos)
        {
            //判断Pos是否已经被找过
            string temp=to_string(tem.find('1',pos));//将找到的'1'的位置转为字符串 用于下一句if判断
            if(position.find(temp)==string::npos)//该位置的'1'没被记录过
               {
                 position+=temp;//将没被记录过的位置  保存在position 中
                count++;//1的个数加1
                pos++;  //下一个位置
                }
             else//该位置的'1'被记录过 那么位置+1
                pos++;//下一个位置
        }
    }
    return count;
}
};
全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
正在热议
更多
# 一张图晒出你司的标语 #
4274次浏览 75人参与
# AI面会问哪些问题? #
27625次浏览 552人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
15162次浏览 221人参与
# 你的实习产出是真实的还是包装的? #
20103次浏览 342人参与
# 找AI工作可以去哪些公司? #
9011次浏览 233人参与
# 春招至今,你的战绩如何? #
64840次浏览 579人参与
# 米连集团26产品管培生项目 #
13327次浏览 285人参与
# 从事AI岗需要掌握哪些技术栈? #
8860次浏览 302人参与
# 你做过最难的笔试是哪家公司 #
33267次浏览 231人参与
# 中国电信笔试 #
31977次浏览 292人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
340747次浏览 2174人参与
# 哪些公司真双非友好? #
69570次浏览 289人参与
# 阿里笔试 #
178475次浏览 1315人参与
# 机械人避雷的岗位/公司 #
62698次浏览 393人参与
# 第一份工作一定要去大厂吗 #
14491次浏览 122人参与
# 金三银四,你的春招进行到哪个阶段了? #
22065次浏览 280人参与
# 为了减少AI幻觉,你注入过哪些设定? #
26245次浏览 310人参与
# 沪漂/北漂你觉得哪个更苦? #
9797次浏览 193人参与
# HR最不可信的一句话是__ #
6195次浏览 113人参与
# 应届生第一份工资要多少合适 #
20674次浏览 86人参与
# AI时代,哪个岗位还有“活路” #
11470次浏览 341人参与
# 春招你拿到offer了吗 #
831151次浏览 9986人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务