JVM
String charAt()
글을 쓰는 개발자
2021. 6. 25. 09:20
반응형
Array Required, but java.lang.String found
import java.util.*;
class Solution {
public int lengthOfLongestSubstring(String s) {
HashMap<Character,Integer> map = new HashMap<>();
int left=0,ans=0;
for(int i=0;i<s.length();i++){
if(map.containsKey(s[i])){ //여기에서 error가 난다.
int loc=map.get(s[i])+1;//여기에서 error가 난다.
left=left>loc?left:loc;
}
int value = i-left+1;
ans=ans<value?value:ans;
map.put(s[i],i);//여기에서 error가 난다.
}
return ans;
}
}

String instance method에서 charAt()을 쓰면 해당 문자열 인덱스 부분을 char 타입으로 반환하는 메소드가 있다.
import java.util.*;
class Solution {
public int lengthOfLongestSubstring(String s) {
HashMap<Character,Integer> map = new HashMap<>();
int left=0,ans=0;
for(int i=0;i<s.length();i++){
if(map.containsKey(s.charAt(i))){
int loc=map.get(s.charAt(i))+1;
left=left>loc?left:loc;
}
int value = i-left+1;
ans=ans<value?value:ans;
map.put(s.charAt(i),i);
}
return ans;
}
}
이와 같이 수정하면 된다.
String에서 s[i]를 허용하지 않는 것은 immutable 하기 때문이다.

보시다시피 final 제어자 붙은 것을 볼 수 있다.
반응형