インフラストラクチャ・カリキュラムのタイプ別に整理📋 String&Array第1弾
40503 ワード
📌 Anagram String s = "123444a";
int[] anagram = new int[256];
for(int i=0;i<s.length();i++){
anagram[s.charAt(i)]++;
}
for (int i : anagram) {
System.out.print(i + " ");
}
int配列に入るインデックスはintではなくCharなので
ここではanagram[1]の値は含まれていません.
「1」という名前のChar値を使用するため、その値に一致するインデックスに従います.
📌 文字Anagram
同じ文字列であるかどうかの問題public class AnagramTest {
public static void main(String[] args) {
String ab = "abcd";
String ba = "badc";
int[] check = new int[256];
for(int i=0;i<ab.length();i++){
check[ab.charAt(i)]++;
}
int[] baChecking = new int[256];
for(int i=0;i<ab.length();i++){
baChecking[ba.charAt(i)]++;
}
if(Arrays.equals(check, baChecking)){
System.out.println("true");
}
}
}
🎯 output
true
charatを使用して
String s = "123444a";
int[] anagram = new int[256];
for(int i=0;i<s.length();i++){
anagram[s.charAt(i)]++;
}
for (int i : anagram) {
System.out.print(i + " ");
}
同じ文字列であるかどうかの問題
public class AnagramTest {
public static void main(String[] args) {
String ab = "abcd";
String ba = "badc";
int[] check = new int[256];
for(int i=0;i<ab.length();i++){
check[ab.charAt(i)]++;
}
int[] baChecking = new int[256];
for(int i=0;i<ab.length();i++){
baChecking[ba.charAt(i)]++;
}
if(Arrays.equals(check, baChecking)){
System.out.println("true");
}
}
}
🎯 output
true
charatを使用して📌 デジタルAnagram
2つの配列の同じ数のインデックスを返します.public class FindAnagramMapping {
public static void main(String[] args) {
int[] a = {11,27,1,324,12};
int[] b = {27,11,324,12,1};
int[] result = solution(a,b);
for (int i : result) {
System.out.print(i + " ");
}
}
private static int[] solution(int[] a, int[] b) {
int [] result = new int[a.length];
Map<Integer,Integer> map = new HashMap<>();
for(int i=0;i<a.length;i++){
map.put(b[i],i);
}
for(int i=0;i<a.length;i++){
result[i] = map.get(a[i]);
}
return result;
}
}
🎯 output
1 0 4 2 3
public class FindAnagramMapping {
public static void main(String[] args) {
int[] a = {11,27,1,324,12};
int[] b = {27,11,324,12,1};
int[] result = solution(a,b);
for (int i : result) {
System.out.print(i + " ");
}
}
private static int[] solution(int[] a, int[] b) {
int [] result = new int[a.length];
Map<Integer,Integer> map = new HashMap<>();
for(int i=0;i<a.length;i++){
map.put(b[i],i);
}
for(int i=0;i<a.length;i++){
result[i] = map.get(a[i]);
}
return result;
}
}
1 0 4 2 3
value,index
Map.get(value)
を入れるインデックス📌 同じ文字のAnagram public class ScratchPad {
public static void main(String[] args) {
String[] list = {"eat","tea","tan","ate","nat","bat"};
System.out.println(solution(list));
}
private static List<List<String>> solution(String[] list) {
/*
list -> char
char sorting
sorting 한 값이 같으면 추가
같은 값 = map
*/
Map<String,List<String>> map = new HashMap();
List<List<String>> result = new ArrayList<>();
for(String s : list){
char[] chars = s.toCharArray();
Arrays.sort(chars);
String sortingString = String.valueOf(chars);
System.out.println(sortingString);
System.out.println(" ==== ");
if(map.containsKey(sortingString)){
map.get(sortingString).add(sortingString);
}else{
List<String> stringList = new ArrayList<>();
stringList.add(s);
map.put(sortingString,stringList);
}
}
result.addAll(map.values());
return result;
}
}
🎯 output
[[eat, aet, aet], [bat], [tan, ant]]
public class ScratchPad {
public static void main(String[] args) {
String[] list = {"eat","tea","tan","ate","nat","bat"};
System.out.println(solution(list));
}
private static List<List<String>> solution(String[] list) {
/*
list -> char
char sorting
sorting 한 값이 같으면 추가
같은 값 = map
*/
Map<String,List<String>> map = new HashMap();
List<List<String>> result = new ArrayList<>();
for(String s : list){
char[] chars = s.toCharArray();
Arrays.sort(chars);
String sortingString = String.valueOf(chars);
System.out.println(sortingString);
System.out.println(" ==== ");
if(map.containsKey(sortingString)){
map.get(sortingString).add(sortingString);
}else{
List<String> stringList = new ArrayList<>();
stringList.add(s);
map.put(sortingString,stringList);
}
}
result.addAll(map.values());
return result;
}
}
[[eat, aet, aet], [bat], [tan, ant]]
関数に入る前に、一番上のように注釈をつけて、接着剤を加えます.
String sortingString = String.valueOf(chars);
この部分では、次のように間違っているかもしれません.String sortingString = Arrays.toString(chars);
// output : [a,e,t] , [a,n,t] ....
String sortingString = chars.toString();
// output : 주소값 ( @[C@27d6c5e0 )
Map<String,List<String>> map = new HashMap();
forループでこのエラーを宣言📌 Priority Queue
🎯 質問する
2番目の数字は?
public class KthLargestElementInAnArray {
public static void main(String[] args) {
Comparator<Integer> comp = (o1, o2) -> o1-o2;
int[] arrays = {4,2,1,5,7,10,232};
PriorityQueue<Integer> pq = new PriorityQueue<>(comp);
for (Integer i :arrays) {
pq.offer(i);
if(pq.size()>=3){
pq.poll();
}
}
System.out.println(pq.peek());
}
}
🔥 idea
優先キューの比較器、queueを定義します.size()が3を超える場合は、ポーリングを行い、2つを保持します.昇順で定義されています.
📌 StringBuilderの問題
🎯 output
🎯 intput : "8F3Z-2e-9-wadwqdas"
🎯 output : 8F3-Z2E9-WADW-QDAS
🔥 idea
🎯 intput : "8F3Z-2e-9-wadwqdas"
🎯 output : 8F3-Z2E9-WADW-QDAS
Stringを追加するときにString Builderを使うと便利です.
appendを使用してインデックスに追加するinsertを追加します.
for(int i=k;i<length;i=i+k){
sb.insert(length-i,"-");
}
後からfor loopのアイデアを追加 String str = "8F3Z-2e-9-wadwqdas";
int k=5;
String solution = solution(str, k);
System.out.println(solution);
}
private static String solution(String str, int k) {
StringBuilder sb = new StringBuilder();
String replace = str.replace("-", "");
String s = replace.toUpperCase();
int length = s.length();
for(int i=0;i<length;i++){
sb.append(s.charAt(i));
}
for(int i=k;i<length;i=i+k){
sb.insert(length-i,"-");
}
String s1 = String.valueOf(sb);
return s1;
}
📌 区間と最大値
🎯 output
🎯 input : int[] nums = {-2,1,-3,4,-1,2,1,-5,4};
🎯 output : 6
🔥 idea
sum = Math.max(loop[i], sum+loop[i])
max = Math.max(max,sum)
sum=現在の最大値の計算
max=現在までの最大値保存
public class MaximumSubArray {
public static void main(String[] args) {
int[] nums = {-2,1,-3,4,-1,2,1,-5,4};
System.out.println(solution(nums));
}
public static int solution(int nums[]){
int newSum = nums[0];
int max = nums[0];
for(int i=1;i<nums.length;i++){
newSum = Math.max(nums[i],newSum+nums[i]);
max = Math.max(newSum,max);
}
return max;
}
}
Reference
この問題について(インフラストラクチャ・カリキュラムのタイプ別に整理📋 String&Array第1弾), 我々は、より多くの情報をここで見つけました
https://velog.io/@camel-man-ims/인프런-강좌-유형별-정리-String-Array
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
🎯 input : int[] nums = {-2,1,-3,4,-1,2,1,-5,4};
🎯 output : 6
sum = Math.max(loop[i], sum+loop[i])
max = Math.max(max,sum)
public class MaximumSubArray {
public static void main(String[] args) {
int[] nums = {-2,1,-3,4,-1,2,1,-5,4};
System.out.println(solution(nums));
}
public static int solution(int nums[]){
int newSum = nums[0];
int max = nums[0];
for(int i=1;i<nums.length;i++){
newSum = Math.max(nums[i],newSum+nums[i]);
max = Math.max(newSum,max);
}
return max;
}
}
Reference
この問題について(インフラストラクチャ・カリキュラムのタイプ別に整理📋 String&Array第1弾), 我々は、より多くの情報をここで見つけました https://velog.io/@camel-man-ims/인프런-강좌-유형별-정리-String-Arrayテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol