【问题标题】:Question in regards to a line of the code [duplicate]关于一行代码的问题[重复]
【发布时间】:2020-09-26 03:39:55
【问题描述】:

在下面的代码中我有一个问题,给定的声明数组是整数类型。你能解释一下 map[s.charAt(i)]++ 行发生了什么吗?我无法理解此处的语句,因为数组在初始化期间是整数类型,但字符类型作为输入给出。

public int firstUniqChar(String s) 
{ 
int[] map = new int[128]; 
for(int i=0;i<s.length();i++)
 map[s.charAt(i)]++; 
for(int i=0;i<s.length();i++) 
if(map[s.charAt(i)] == 1) 
return i; 
return -1;
 }

【问题讨论】:

标签: java arrays


【解决方案1】:

在 java 中,假设你有一个int i = 0 变量声明,i++ 是一个将 1 与变量值相加的语法糖,即i = i + 1。 在您的情况下,您将 1 与 map 数组位置相加,由 s.charAt(i) 索引。

假设s 是一个String 对象,s.charAt(i)i 位置(0-indexed)返回char。当 Java 将char 读取为int(索引map 数组)时,使用该char 的ASCII 码。

所以,map[s.charAt(i)]++ 所做的是将 1 与由字符的 ASCII 码索引的 map 数组相加。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多