알고리즘 주요 표현식 정리
표현식
// 정렬
Arrays.sort(ints1); // 기본이 오름차순
// reverse()[Palindrome]를 위해서는 StringBuilder(str) 사용
String tmp = new StringBuilder(str).reverse().toString();
// 대소문자 구분없이 equalsIgnoreCase(받는 str)
str.equalsIgnoreCase(tmp);
// 문자배열을 char 로 받을 때 for문
for(char x : str.toCharArray()){...}
// char 입력시 표현
char c = input.next().charAt(0);
// int [] 배열 정의 index 표현을 할 때는 List 대신해
int[] answer = new int[s.length()];
// 대알파벳 -> "" 공백으로 처리
str = str.toUpperCase().replaceAll("[^A-Z]", "");
기본 알고리즘
- swap 알고리즘
char tmp = ch[lt]; // swap 알고리즘 적용
ch[lt] = ch[rt];
ch[rt] = tmp;
- 최대값 알고리즘
for (String tmp : ss) {
int len = tmp.length();
if (max < len) { // 최대값 구하는 알고리즘 적용, max <= len (x)
max = len;
answer = tmp;
}
}
- 문자열 뒤집기
while (lt < rt) { // 뒤집기 단골 변수 : lt, rt => while(lt<rt)
// 알파벳 아닌 것들은 그냥 넘어가
if(!Character.isAlphabetic(ch[lt])) lt++;
else if(!Character.isAlphabetic(ch[rt])) rt--;
else { // 알파벳일 때
char tmp = ch[lt]; // swap 알고리즘 적용
ch[lt] = ch[rt];
ch[rt] = tmp;
lt++;
rt--;
}
}
- 중복문자
public String solution(String str) {
String answer = "";
/* for (int i = 0; i < str.length(); i++) {
if(str.indexOf(str.charAt(i)) == i ) answer += str.charAt(i);
}*/
for (char x : str.toCharArray()) {
if (!answer.contains(String.valueOf(x))) {
answer += String.valueOf(x);
}
}
return answer;
}
- 아나그램
public String solution(String s1, String s2) {
String answer = "YES";
HashMap<Character, Integer> map = new HashMap<>();
for (char x : s1.toCharArray()) {
map.put(x, map.getOrDefault(x, 0) + 1); // map의 value에 count값으로 1부터 계속 넣기
}
for (char x : s2.toCharArray()) {
// map의 value에서 같지 않은 게 나오면 return "No"
if(map.containsKey(x) || map.get(x)==0) return "NO";
// 아니면 return "YES"
map.put(x, map.get(x) - 1);
}
return answer;
}
- sliding window(짧은 문자거리)
public int[] solution(String s, char t) {
// index 표현을 위해 int[]로 썼던 것
int[] answer = new int[s.length()];
int p = 1000;
// 왼쪽부터 시작하는 loop
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == t) {
p = 0;
answer[i] = p;
}
else {
p++;
answer[i] = p;
}
}
// 오른쪽부터 시작하는 loop
for (int i = s.length()-1; i >=0 ; i--) {
if(s.charAt(i)==t) p=0; // 이미 왼쪽 loop할 때 넣었으니 0처리
else{
p++;
answer[i] = Math.min(answer[i], p); // 기존의 배열값들 중 비교해서 작은 걸로 다시 넣는다.
}
}
return answer;
}
- 문자열 압축
private String solution(String str) {
String answer = "";
int count = 1;
for (int i = 0; i < str.length()-1; i++) {
// char[] chars = str.toCharArray();
if (str.charAt(i) == str.charAt(i + 1)) { // 이것때문에 i < str.length()-1; 해주는 것!
count++;
// answer +=
} else {
answer += str.charAt(i);
if (count > 1) answer += String.valueOf(count);
count = 1;// count 초기화
}
}
return answer;
}
Author And Source
이 문제에 관하여(알고리즘 주요 표현식 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mooh2jj/알고리즘-주요-표현식-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)