문제 : 숫자로 구성된 문자열을 정수로 변환

public class StringToInt {
    public static int convert(String s) {
        s = s.trim();
        return Integer.parseInt(s);

    }
}

solution

public class StringToInt {
    public static int convert(String s) {
        char[] ca = s.toCharArray();
        int num = 0;
        // 123
        for(char c : ca){
            num *=10;
        num += c - '0'; // get int value from char
        }
        return num;

    }
}

문제 : 주어진 문자열에서 모든 문자가 유일한지 판단

import java.util.HashSet;

public class UniqChar {
    public static boolean isUniqChar(String s) {
        char[] ca = s.toCharArray();
        HashSet se = new HashSet();
        boolean res = false;
        for(char c : ca){
            if(se.contains(c)){
                res = false;
                break;
            }
            se.add(c);
            res = true;
        }
        return res;
    }
}

2 solutions

import java.util.HashSet;

public class UniqChar {
    public static boolean isUniqChar(String s) {
        /**
         * 1. boolean[]
         * 2. HashSet
        */
        HashSet<Character> se = new HashSet<Character>();
        for(char c : s.toCharArray()){
            if(se.contains(c)){
                return false;
            }
            se.add(c);
        }
        return true;
    }
}

문제 : 두 문자열에 대해 아나그램 여부 판단

  • 문제길이 적당하며, 문자열을 얼마나 컨트롤 하는지 파악가능
import java.util.HashMap;

public class Anagram {
    public static boolean isAnagram(String s1, String s2) {
        // If two strings are in anagram relationship, the length of two string should be same.
        if(s1.length() != s2.length()){
            return false;
        }else{
            HashMap<Character, Integer> s1_map = new HashMap<Character, Integer>();

            char[] s1_ca = s1.toCharArray();
            char[] s2_ca = s2.toCharArray();

            // O(n)
            for(int i=0; i < s1_ca.length; i++){
                if(!s1_map.containsKey(s1_ca[i])){
                    s1_map.put(s1_ca[i], 0);
                }else{
                    s1_map.put(s1_ca[i], s1_map.get(s1_ca[i]) + 1);
                }
            }

            // O(n) 
            for(int i =0; i< s2_ca.length; i++){
                if(!s1_map.containsKey(s2_ca[i])) return false;
            }
            // --> O(2n) = O(n)
        }
        return true;
    }
}

solution

import java.util.HashMap;

public class Anagram {
    public static boolean isAnagram(String s1, String s2) {
        // Try 정수 배열 
        if(s1.length() != s2.length()){
            return false;
        }else{
            HashMap<Character, Integer> s1_map = new HashMap<Character, Integer>();

            char[] s1_ca = s1.toCharArray();
            char[] s2_ca = s2.toCharArray();

            for(int i=0; i < s1_ca.length; i++){
                if(!s1_map.containsKey(s1_ca[i])){
                    s1_map.put(s1_ca[i], 0);
                }else{
                    s1_map.put(s1_ca[i], s1_map.get(s1_ca[i]) + 1);
                }
            }

            for(int i =0; i< s2_ca.length; i++){
                if(!s1_map.containsKey(s2_ca[i])) return false;
            }
        }
        return true;
    }
}

문제 : Compact string - Runlength

import java.util.HashMap;

public class RunLengthCode {
    public static String coding(String s) {
        HashMap<Character, Integer> retMap = new  HashMap<Character, Integer>();
        String retStr = "";

        for(char c : s.toCharArray()){
            if(!retMap.containsKey(c))
                retMap.put(c, 1);
            else
                retMap.put(c, retMap.get(c) + 1);
        }

        for(char c : retMap.keySet()){
            retStr += String.valueOf(c) + String.valueOf(retMap.get(c));
        }

        return retStr;
    }
}

solution

public class RunLengthCode {
    //aaaabbcccc
    public static String coding(String s) {
        if (s == null) return null;

        char[] ca = s.toCharArray();
        String result = "";

        int count = 1;
        char prev = ca[0];

        for(int i = 1; i<ca.length; i++){
            if(prev == ca[i]){
                count++;
            }else{
                result = result + prev+count;
                count = 1;
                prev = ca[i];
            }
        }

        result = result+ prev + count;
        return result;
    }
}

문제 : WordCount

import java.util.HashMap;

public class WordCount {
    private HashMap<String, Integer> map;

    public WordCount(){
        map = new HashMap<String, Integer>();
    }

    public void read(String[] doc) {
        for(String s : doc){
            if(!map.containsKey(s)){
                map.put(s, 1);
            }else {
                map.put(s, map.get(s) +1);
            }

        }
    }

    public int getCount(String word) {
        /*
        int cnt = 0;
        if(map.containsKey(word)){
            cnt = map.get(word);
        }

        return cnt;
        */
        if(map.get(word) == null) 
            return 0;
        else 
            return map.get(word);


    }
}

results matching ""

    No results matching ""