Java,mask [s.charAt(i)]是什么意思?mask是一个布尔数组

hehexiaowangzi

我只是开始解决破解编码面试中的问题。这是第一个问题:实施一种算法来确定字符串是否具有所有唯一字符。如果您不能使用其他数据结构怎么办?解决方案如下:使用布尔数组跟踪ASCII集中每个可能字符的出现。最初,该数组中的每个值都是false,直到出现相应的字符值为止。如果该字符值再次出现,则如果数组中的对应值已经为true,则返回false。时间:O(n),n是字符串的长度。空格:O(n),名为mask的数组。源代码:

public class Interview {

    // Assume every character in string is in ASCII.
    public boolean uniqueChars(String s) {
        boolean[] mask = new boolean[256];
        for (int i = 0; i < s.length(); i++) {
            if (mask[s.charAt(i)])
                return false;
            mask[s.charAt(i)] = true;
        }
        return true;
    }
} 

我不明白这一点:mask [s.charAt(i)]。我认为s.charAt(i)是一个char而不是一个数字,所以我不知道它是如何工作的。我知道这是一个简单的问题,但我找不到直接的答案。希望你们能帮助我。非常感谢。

TJ人群

mask[s.charAt(i)]sat索引处获取字符i,将其转换为int(隐式),然后maskmask数组的该索引处查找值int字符不是ASCII,而是UTF-16(因为这是Java字符的定义方式)。该代码做出了一个很大的假设(在注释中提到),该字符串仅包含ASCII字符,显然它被定义为值为的字符< 256这是ASCII的“扩展”,ASCII本身仅定义字符< 128对于值< 128,ASCII和UTF-16相同。

您的总体功能是这样做的:从具有所有false条目的数组开始(因为这是的默认状态boolean[]),它循环遍历字符串,s并针对每个字符查找是否以前看过该字符。如果有的话,请返回true该函数(我们已经至少看到两次该字符)。如果以前没有看到字符,则将数组中的该条目设置为true如果它一直返回到字符串的末尾而没有返回true,则返回false -字符串没有重复两次相同的字符。

ArrayIndexOutOfBoundsException如果看到的字符int值为>= 256,则代码将失败并显示,这很有可能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

'if((mask | u)== u)'是什么意思?

`.prose ol[type="A" s] ` 最后一个 `s` 在 CSS 中是什么意思?

s [i]-'0'是什么意思?

if(!(is >> s))是什么意思?

Java中的“ + i”是什么意思?

openssl s_client,s / i是什么意思?

Java 泛型:<T> T[] toArray(T[] a) 中的第一个“T”是什么意思?

int bit =(weight [i]&s)是什么意思

Java递归通用模板:这是什么意思... S扩展Writer <E >>扩展Entity <E,S>

Java:〜是什么意思

“ ss -s”的输出是什么意思?

printf中的“%。* s”是什么意思?

Elixir中的“?\ s”是什么意思?

npm -S标志是什么意思?

for循环中的“s”是什么意思?

--limit 5 / s是什么意思?

在printf中“%。#s”是什么意思?

Azure DevOps的C:\ agent \ _work \ 1 \ a中最后一个字母“ a”,“ b”或“ s”是什么意思?有人知道最后一个字母代表什么吗?

在 Java 中 sum [i++] 是什么意思?

此条件(s [i] && s [i]!= c)是什么意思?

命令sed -i“ s / ^ \ + // g; s / \ + / \ t / g”是什么意思?

Kotlin:注解 (acc: S, T) -> S 是什么意思?

JavaScript中(/ ^ \ s + | \ s + $ / gm)是什么意思?

-S在gksu中是什么意思--S mount…?

format("%s-%s",) 在 terraform 中是什么意思?

使用Java中表达的regualr的Mask字符串

jQuery Mask插件不能以字母“ S”开头

什么是'/ [AZ] / s | | / | gp'是什么意思?

在Java中,NaN是什么意思?