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 제어자 붙은 것을 볼 수 있다.

반응형