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

这篇具有很好参考价值的文章主要介绍了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留到下一次实现。文章来源地址https://www.toymoban.com/news/detail-732319.html

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;

    } 
}

到了这里,关于Integer.valueOf()用于字符和字符串的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux中字符串使用单引号与双引号的区别

    一、 单引号 name=\\\'钱学森\\\' str=\\\'我很崇拜 $name\\\' echo $str 输出结果为: 我很崇拜 $name 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的,单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符

    2024年02月19日
    浏览(24)
  • java中操作字符串都有哪些类?它们之间有什么区别?

    Java中常用的字符串操作类有: String类是Java中最常用的字符串类,它是不可变的字符串,即创建后不能被修改。 StringBuilder类也是一个字符串操作类,但它是可变的,即可以修改已经创建的字符串对象。StringBuilder比String更适合在程序中进行字符串拼接操作。 StringBuffer类与St

    2023年04月21日
    浏览(74)
  • 【==是判断相等吗?---错辣】C++和JAVA中判断字符串值相等的区别

    参考文章:这里;这里;这里 C++中的 string 类型可以使用 == 和 != 来判断两个字符串的值是否相等;而JAVA不行,JAVA中 == 和 != 是用来 判断两个字符串的地址是否相同 (或者说是 对象是否相同 ,即 是否为同一个对 象)。 运行结果 结果解释 :C++中可以利用 == 来判断两个字符

    2023年04月21日
    浏览(42)
  • 【前端面试3+1】12 toktn验证过程、面向对象特性、webpack和vite的区别、【字符串中的第一个唯一字符】

    用户登录:用户提供用户名和密码进行登录。 服务器验证:服务器接收到用户提供的用户名和密码,进行验证。 生成token:如果用户名和密码验证通过,服务器会生成一个token,通常包含一些加密的信息,如用户ID、过期时间等。 返回token:服务器将生成的token返回给客户端(

    2024年04月18日
    浏览(42)
  • 一文读懂ElasticSearch中字符串keyword和text类型区别_elasticsearch text和keyword

    可以看到,这里的数据被ES分为了4个词分别是“广” ,“东”,“深”,“圳”。同样,第二条数据也被分为了“广” ,“西”,“南”,“宁”。这里可以理解为 keyword类型存储的数据为“广东深圳”(存储未分词的原始数据) text类型存储的数据为“广” ,“东”,“深

    2024年04月16日
    浏览(34)
  • JVM的内存分配及各种常量池的区别(静态常量池、运行时常量池、字符串常量池)

    先了解下JVM中的内存分配,此处以hotspot vm为例(官方jdk采用的vm) 堆内存是各个线程共享的区域 它用于存储已经被虚拟机加载的类信息、常量、静态变量、即编译器编译后的代码等数据。静态变量、常量在方法区,所有方法,包括静态和非静态的,也在方法区 这里解释一下方法

    2023年04月14日
    浏览(42)
  • Java中split分割带空格的字符串 \t \n \r \f 及 \s 的区别

    t:制表符,相当于tab n:换行 r:回车 f:换页 s:在java正则表达式常见,例如java的匹配、替换、分割字符串(matches,split) 例: \\\"Java is fun\\\".matches(\\\"Java.*\\\") //返回true 二、正确使用split来分割空白字符 输入:hello my  lovely    world!       (分别为一个空格、两个空格 和 一个制

    2024年02月15日
    浏览(34)
  • 反转字符串 反转字符串 || 反转字符串 |||

     代码: 代码: 可以双指针 也可以用栈来做 代码:

    2024年02月09日
    浏览(32)
  • 字符串解码:给一个字符串,返回解码后的字符串。

    字符串解码,给一个字符串s,返回解码后的字符串。字符串编码规则为k[str]表示括号内部str字符串正好重复k次,k保证为整数,并且输入的字符串肯定符合这种编码规则不会有额外的空格。 注意事项: 注意括号可能发生嵌套,例如输入字符串为 3[a2[c]] 应该返回accaccacc 1 = s

    2024年02月16日
    浏览(30)
  • 【代码随想录 | Leetcode | 第十一天】字符串 | 反转字符串 | 反转字符串 II | 替换空格 | 反转字符串中的单词 | 左旋转字符串

    欢迎来到小K的Leetcode|代码随想录|专题化专栏,今天将为大家带来字符串~反转字符串 | 反转字符串 II | 替换空格 | 反转字符串中的单词 | 左旋转字符串的分享 ✨ ✨题目链接点这里 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要

    2024年02月15日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包