다음과 같이 설명하면 쉬운 문제입니다.
인덱스가 0인 문자열 단어 배열과 문자 x가 제공됩니다.
문자 x가 포함된 단어를 나타내는 인덱스 배열을 반환합니다.
반환된 배열의 순서는 상관없습니다.
예 1:
입력: 단어 = ["leet","code"], x = "e"
출력: [0,1]
설명: "e"는 "leet"와 "code" 두 단어 모두에서 발생합니다. 따라서 인덱스 0과 1을 반환합니다.예 2:
입력: 단어 = ["abc","bcd","aaaa","cbc"], x = "a"
출력: [0,2]
설명: "a"는 "abc" 및 "aaaa"에 나타납니다. 따라서 인덱스 0과 2를 반환합니다.예 3:
입력: 단어 = ["abc","bcd","aaaa","cbc"], x = "z"
출력: []
설명: "z"는 어떤 단어에도 나타나지 않습니다. 따라서 빈 배열을 반환합니다.제약사항:
1
1 <= 단어[i].length <= 50
x는 영문 소문자입니다.
words[i]는 영문 소문자로만 구성됩니다.
이 문제를 해결하려면 단어 목록을 반복해야 합니다. 각 단어에 대해 문자가 포함되어 있는지 확인하고, 그렇다면 해당 색인을 응답 목록에 저장해야 합니다.
class Solution { public List<Integer> findWordsContaining(String[] words, char x) { // create response final List<Integer> indexes = new ArrayList<>(); // iterate words string array for(int i=0;i<words.length;i++){ // check if char exists into the word if(words[i].indexOf(x) != -1){ indexes.add(i); // if yes add index into the response } } // return searched indexes return indexes; } } </p> <blockquote> <p>런타임: 1ms, Java 온라인 제출의 100.00%보다 빠릅니다.</p> <p>메모리 사용량: 44.95MB, Java 온라인 제출물의 49.76% 미만입니다.</p> </blockquote> <p>—</p> <p>일반적으로 더 깔끔하지만 성능에 더 많은 영향을 미치는 람다/함수 접근 방식을 사용하려는 경우 다음과 같습니다.<br> </p> <pre class="brush:php;toolbar:false">class Solution { public List<Integer> findWordsContaining(String[] words, char x) { return IntStream.range(0, words.length) .boxed() // convert primitive into Class related (int -> Integer) .map(i -> getIndexIfCharExistsInWord(words[i], i, x)) .filter(Objects::nonNull) // to remove null ones from mapping .collect(Collectors.toList()); } public Integer getIndexIfCharExistsInWord(final String word, final int i, final char x) { return word.indexOf(x) != -1 ? i : null; } }
런타임: 9ms, Java 온라인 제출의 2.72%보다 빠릅니다.
메모리 사용량: 44.90MB, Java 온라인 제출물의 66.32% 미만입니다.
—
그렇습니다! 논의할 다른 사항이 있으면 언제든지 댓글을 남겨주세요. 누락된 사항이 있으면 알려주시면 그에 따라 업데이트할 수 있습니다.
다음 포스팅까지! :)
위 내용은 Leetcode — 문자가 포함된 단어 찾기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!