Leetcode 문제 풀이 - 데이터 구조의 문자열
1. 문자열 순환 시 프 트 포함
프로 그래 밍 의 아름다움 3.1
s1 = AABCD, s2 = CDAA
Return : true
두 문자열 s1 과 s2 를 지정 하고 s2 가 s1 에 의 해 순환 적 으로 자 리 를 옮 길 수 있 는 문자열 이 포함 되 어 있 는 지 확인 해 야 합 니 다.
s1 순환 시 위 를 옮 긴 결 과 는 s1s 1 의 하위 문자열 이 므 로 s2 가 s1s 1 의 하위 문자열 인지 판단 하면 됩 니 다.
2. 문자열 순환 시 프 트
프로 그래 밍 의 아름다움 2.17
s = "abcd123" k = 3
Return "123abcd"
문자열 을 오른쪽으로 K 비트 로 이동 합 니 다.
abcd 123 의 abcd 와 123 을 단독으로 뒤 집어 dcba 321 을 얻 은 후 전체 문자열 을 뒤 집어 123 abcd 를 얻 습 니 다.
3. 문자열 에서 단어의 뒤 집기
프로그래머 코드 면접 안내
s = "I am a student"
Return "student a am I"
모든 단 어 를 뒤 집 은 다음 문자열 전 체 를 뒤 집 습 니 다.
4. 두 문자열 에 포 함 된 문자 가 똑 같은 지 여부
242. Valid Anagram (Easy)
s = "anagram", t = "nagaram", return true.
s = "rat", t = "car", return false.
HashMap 으로 문자 와 출현 횟수 를 매 핑 한 다음 두 문자열 에 나타 난 문자 의 수량 이 같 는 지 비교 할 수 있 습 니 다.
이 문제 의 문자열 은 26 개의 소문 자 만 포함 되 어 있 기 때문에 길이 가 26 인 정수 그룹 을 사용 하여 문자열 에 나타 난 문 자 를 통계 할 수 있 으 며, HashMap 을 사용 하지 않 습 니 다.
public boolean isAnagram(String s, String t) {
int[] cnts = new int[26]; for (char c : s.toCharArray()) { cnts[c - 'a']++; } for (char c : t.toCharArray()) { cnts[c - 'a']--; } for (int cnt : cnts) { if (cnt != 0) { return false; } } return true; }
5. 문자 집합 으로 구 성 될 수 있 는 답장 문자열 의 최대 길 이 를 계산 합 니 다.
409. Longest Palindrome (Easy)
Input : "abccccdd"
Output : 7
Explanation : One longest palindrome that can be built is "dccaccd", whose length is 7.
길이 가 256 인 정형 배열 을 사용 하여 모든 문자 에 나타 난 개 수 를 통계 하고 모든 문 자 는 짝수 로 답장 문자열 을 구성 할 수 있 습 니 다.
답장 문자열 의 가장 중간 에 있 는 문 자 는 단독으로 나타 날 수 있 기 때문에 단독 문자 가 있 으 면 가장 중간 에 놓 습 니 다.
public int longestPalindrome(String s) {
int[] cnts = new int[256]; for (char c : s.toCharArray()) { cnts[c]++; } int palindrome = 0; for (int cnt : cnts) { palindrome += (cnt / 2) * 2; } if (palindrome < s.length()) { palindrome++; // s , } return palindrome; }
6. 문자열 동 구성
205. Isomorphic Strings (Easy)
Given "egg", "add", return true.
Given "foo", "bar", return false.
Given "paper", "title", return true.
마지막 으로 나타 난 위 치 를 기록 합 니 다. 두 문자열 의 문자 가 마지막 에 나타 난 위치 가 같다 면 같은 구조 에 속 합 니 다.
public boolean isIsomorphic(String s, String t) {
int[] preIndexOfS = new int[256]; int[] preIndexOfT = new int[256]; for (int i = 0; i < s.length(); i++) { char sc = s.charAt(i), tc = t.charAt(i); if (preIndexOfS[sc] != preIndexOfT[tc]) { return false; } preIndexOfS[sc] = i + 1; preIndexOfT[tc] = i + 1; } return true; }
7. 답장 하위 문자열 개수
647. Palindromic Substrings (Medium)
Input: "aaa"
Output: 6
Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa".
문자열 의 한 사람 부터 하위 문자열 을 확장 하려 고 시도 합 니 다.
private int cnt = 0;
public int countSubstrings(String s) { for (int i = 0; i < s.length(); i++) { extendSubstrings(s, i, i); // extendSubstrings(s, i, i + 1); // } return cnt; } private void extendSubstrings(String s, int start, int end) { while (start >= 0 && end < s.length() && s.charAt(start) == s.charAt(end)) { start--; end++; cnt++; } }
8. 하나의 정수 가 답문 수 인지 아 닌 지 를 판단 한다.
9. Palindrome Number (Easy)
추가 공간 을 사용 할 수 없고 정 수 를 문자열 로 변환 하여 판단 할 수 없습니다.
정 수 를 좌우 두 부분 으로 나 누고 오른쪽 부분 을 옮 긴 다음 에 이 두 부분 이 같 는 지 판단 해 야 한다.
public boolean isPalindrome(int x) {
if (x == 0) { return true; } if (x < 0 || x % 10 == 0) { return false; } int right = 0; while (x > right) { right = right * 10 + x % 10; x /= 10; } return x == right || x == right / 10; }
9. 바 이 너 리 문자열 의 연속 1 과 연속 0 수량 이 같은 하위 문자열 개 수 를 통계 합 니 다.
696. Count Binary Substrings (Easy)
Input: "00110011"
Output: 6
Explanation: There are 6 substrings that have equal number of consecutive 1's and 0's: "0011", "01", "1100", "10", "0011", and "01".
public int countBinarySubstrings(String s) {
int preLen = 0, curLen = 1, count = 0; for (int i = 1; i < s.length(); i++) { if (s.charAt(i) == s.charAt(i - 1)) { curLen++; } else { preLen = curLen; curLen = 1; } if (preLen >= curLen) { count++; } } return count; }
다음으로 전송:https://www.cnblogs.com/daimasanjiaomao/p/11009133.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.