当前位置: 首页 > news >正文

Integer.valueOf()用于字符和字符串的区别

LeetCode 17 电话号码的字母组合

先贴代码

class Solution {List<String> result = new ArrayList<>();String temp = new String("");Integer num;public List<String> letterCombinations(String digits) {dfs(digits, 0);return result;} public void dfs(String digits, int deepfloor) {if(digits.compareTo("") == 0) {return;}if(deepfloor == digits.length()) {result.add(new String(temp));return;}num =  Integer.valueOf(digits.substring(deepfloor,deepfloor+1));//  num =  Integer.valueOf(digits.charAt(deepfloor)); 这是错误写法String sub = numberToString(num);for(int j=0;j<sub.length();j++) {temp = temp + sub.substring(j,j+1);dfs(digits, deepfloor+1);temp = temp.substring(0, deepfloor);}}public String numberToString(int num) {switch(num){case 2:return "abc";case 3:return "def";case 4:return "ghi";case 5:return "jkl";case 6:return "mno";case 7:return "pqrs";case 8:return "tuv";case 9:return "wxyz";}return "";} 
}

踩坑:

1、假设digits = "23",deepfloor = 0。

如果num =  Integer.valueOf(digits.charAt(deepfloor)); 

num=50,这是为什么呢,因为digits.charAt(deepfloor)='2',对应的ASCII值为50...

而 num =  Integer.valueOf(digits.substring(deepfloor,deepfloor+1));

num=2,才能得到正确结果,因为digits.substring(deepfloor,deepfloor+1)="2",Integer.valueOf()方法只能用于字符串,例如"2",而不能用于单个字符,例如'2'。

2、String temp =  new String("");

是否""字符串会占据一个字符位置呢?

分别测试了当字符串temp为""的第0位字符

和拼接字符串"A"之后temp的第0位字符

首先当temp为""时, 测试System.out.println(temp.charAt(0));

会报错java.lang.StringIndexOutOfBoundsException: String index out of range: 0

因此,""其实不占据字符位

当temp拼接字符串"A"之后, 测试System.out.println(temp.charAt(0));

顺利输出字符'A'

因此也不用担心,通过拼接字符串,初始化"",会造成索引错乱的情况

但是,更好的办法应该是使用StringBuilder

如果是纯字符串拼接,会生成很多临时对象,性能会略差,Java实现中是用StringBuilder做拼接的。

StringBuilder留到下一次实现。

class Solution {List<String> result = new ArrayList<>();String temp = new String("");public List<String> letterCombinations(String digits) {System.out.println(temp.charAt(0));temp = temp + "A";System.out.println(temp.charAt(0));return result;} 
}

http://www.lryc.cn/news/169107.html

相关文章:

  • 机械寿命预测(基于NASA C-MAPSS数据的剩余使用寿命RUL预测,Python代码,CNN_LSTM模型,有详细中文注释)
  • ConfigMaps-1
  • docker上安装es
  • #循循渐进学51单片机#c语言基础和流水灯实现#not.3
  • 算法刷题 week3
  • TCP详解之流量控制
  • mac根目录下创建文件不能问题
  • stable diffusion model训练遇到的问题【No module named ‘triton‘】
  • 线性dp,优化记录,273. 分级
  • JWT 安全及案例实战
  • Vue2+Vue3
  • 华为云云耀云服务器L实例评测|redis漏洞回顾 MySQL数据安全解决 搭建主从集群MySQL 相关设置
  • 【C++】详解std::thread
  • Apache HTTPD 漏洞复现
  • 【C++从入门到精通】第2篇:C++基础知识(中)
  • 【RuoYi移动端】uni-app中实现生成二维码功能(代码示例)
  • 深度解剖数据在栈中的应用
  • Android10 SystemUI系列 需求定制(一)状态栏控制中心默认tile定制属性适配
  • 【微信小程序】文章设置
  • 程序员在线周刊(冒泡算法篇)
  • string
  • html的日期选择插件
  • OPPO哲库事件 “ 始末 ” ! 集体打哑谜?
  • 数据聚类分析
  • 前 40 个 Microsoft Excel 面试问题答案
  • ros2学习笔记:shell环境变量脚本setup.bash[-z][-n][-f]参数作用
  • xss渗透(跨站脚本攻击)
  • 9参数化重采样时频变换,基于MATLAB平台,程序已调通,可直接替换数据进行分析。
  • RK3568平台开发系列讲解(调试篇)系统运行相关频率设置
  • 嵌入式:驱动开发 Day2