当前位置:网站首页>计算数字区间中数字出现次数
计算数字区间中数字出现次数
2022-08-10 05:36:00 【yeah_you_are】
问题描述
输入两个数n,x(x<=n),找到[x,n]之间数字x出现的次数,只统计数字出现的次数,不需要考虑数字是在个位、十位、百位等位置,将统计结果返回。
比如:n=11,x=1,返回结果4。
1出现1一次,10出现1一次,11出现1两次,所以结果为4。
代码及解析
public int solution(int n,int x) {
int result = 0;
//遍历x到n的所有数字
for (int i=x;i<=n;i++) {
int num = i;
//得到数字的长度
int j = String.valueOf(num).length();
//循环得到数字的各个位上的数值
for (;j>0;j--) {
int p = new Double(Math.pow(10, j-1)).intValue();
//得到各个位上的数字
int b = num / p;
//数字比较
if (b == x) result ++;
//取余重新赋值
num = num % p;
}
}
return result;
}
思考:
其实按照问题给的示例数值11和1去编写处理逻辑会留下一个坑,就是编写代码时很容易给输入的x做了一个默认假设,默认x的长度只有1,只考虑了n的长度变化而忽略了x的长度变化,上面的代码就是只处理了x为一位数的情况,当x为两位数或者三位数时则无法适用,所以需要改进。
改进后:
public int solution(int n, int x) {
int result = 0;
//转换为目标字符串
String goal = String.valueOf(x);
//得到其数字的长度
int len = goal.length();
//遍历x到n的所有数字
for (int i=x;i<=n;i++) {
String num = String.valueOf(i);
//循环分割字符串
for (int j = 0;j <= num.length() - len;j++) {
//得到连续的定长字符串
String sub = num.substring(j, j + len);
//与目标字符串比较
if (goal.equals(sub)) result++;
}
}
return result;
}
测试输入:n=120,x=11,结果:12
11是一次,110到119出现11总共11次,其中111出现2次,所以结果为12。
改进后,将数字问题改为了字符串匹配问题,将数字做定长切割得到待比较的字符串,然后与目标字符串比较即可。这里需要注意的就是循环的限制条件,也就是边界限定问题。
边栏推荐
猜你喜欢
Notes for SVM
STM32单片机手机APP蓝牙高亮RGB彩灯控制板任意颜色亮度调光
每日刷题(day03)——leetcode 899. 有序队列
【fiddler2】使用fiddler mock response 数据
mysql使用常见问题和解决
PyTorch之模型定义
Unity中Xml简介以及通过脚本读取Xml文本中的内容
AR Foundation Editor Remote插件使用方法
LeetCode 1894. Find the student number that needs to be supplemented with chalk
LeetCode 2011. Variable Value After Action (Simple)
随机推荐
LeetCode 938.二叉搜索树的范围和(简单)
PyTorch之CV
PyTorch 之 可视化网络架构
在Unity中让主摄像机发射一条射线,判断射线在游戏场景中所碰撞的游戏物体名字和标签名称(亲测有效)
中间件-Rocktmq
pytorch-10. Convolutional Neural Networks (homework)
序列化、编码、requests库json和data参数
GC0053-STM32单片机NTC热敏电阻温度采集及控制LCD1602
酸阻滞树脂
LeetCode 162. Finding Peaks (Moderate)
Common class String overview
手机端应用类型
LeetCode 1351. Counting Negative Numbers in Ordered Matrices (Simple)
Explain the principle of MySql index in detail
STM32单片机OLED俄罗斯方块单片机小游戏
【fiddler2】使用fiddler mock response 数据
LeetCode 938. Range Sum of Binary Search Trees (Simple)
STM32单片机RGB红蓝调光植物补光系统红光蓝光PWM调色调节亮度
ASP.Net利用代码点击相应按钮来关闭当前的页面(亲测有效)
STM32单片机OLED经典2048游戏单片机小游戏