STRING

 PALINDROME

public class Solution {
    public int isPalindrome(String A) {
        A=A.toLowerCase();
        StringBuilder b=new StringBuilder();
        for(int i=0;i<A.length();i++){
            if(Character.isDigit(A.charAt(i))||Character.isLetter(A.charAt(i))){
                b.append(A.charAt(i));
            }
        }
        int n=b.length()-1;
        for(int i=0;i<b.length()/2;i++){
            if(b.charAt(i)!=b.charAt(n-i)) return 0;
        }
        return 1;
    }
}


Vowel and Consonant Substrings!


public class Solution {
    public int solve(String A) {
        int vowels = 0;
        int consonant = 0;
        int n = A.length();
        for(int i = 0; i<n; i++){
            if(isVowel(A.charAt(i))){
                vowels++;
            }
            else{
                consonant++;
            }
        }
        return (vowels*consonant)%(1000000007);
       
    }
    public boolean isVowel(char c){
        if(c== 'a' || c== 'e' || c== 'i' || c== 'o' || c== 'u'){
            return true;
        }
        return false;
    }
}


Remove Consecutive Characters


public class Solution {
    public String solve(String A, int B) {
        int i=0;
        int n=A.length();
        StringBuilder b=new StringBuilder();
        while(i<n){
            int j=i;
            while(j<n&& A.charAt(i)==A.charAt(j)){
                j++;
            }
            int len=j-i;
            if(len!=B){
                b.append(A.substring(i,j));
            }
            i=j;
            }
                        return b.toString();

    }
}

Serialize

public class Solution {
    public String serialize(String[] A) {

        StringBuilder b=new StringBuilder();
        for(int i=0;i<A.length;i++){
            b.append(A[i]);
            b.append(A[i].length());
            b.append('~');
        }
        return b.toString();
    }
}


Deserialize

public class Solution {
    public String[] deserialize(String A) {
        A=A.toLowerCase();
        String[] res=A.split("~");
        int n=res.length;
        for(int i=0;i<n;i++){
            while(res[i].charAt(res[i].length()-1)>='0' && res[i].charAt(res[i].length()-1)<='9'){
                res[i]=res[i].substring(0,res[i].length()-1);
               
            }
            }
            return res;
    }
        }


String And Its Frequency

public class Solution {
    public String solve(String A) {
        int n=A.length();
        int a[]=new int[26];
        for(int i=0;i<n;i++){
            a[A.charAt(i)-'a']++;
        }
        String ans="";
        for(int i=0;i<n;i++){
            char c=A.charAt(i);
            if(a[c-'a']!=-1){
                ans+=c;
                ans+=a[c-'a'];
                a[c-'a']=-1;
            }
        }
        return ans;
    }
}

Bulls and Cows

public class Solution {
    public String solve(String A, String B) {
        int bulls=0,cows=0;
        int[] n=new int[10];
        for (int i=0;i<A.length();i++){
            int s=A.charAt(i)-'0';
            int g=B.charAt(i)-'0';
            if(s==g){
                bulls++;
            }else{
                if(n[s]++<0) cows++;
                if(n[g]-->0) cows++;
            }
        }
        String s=bulls+"A"+cows+"B";
        return s;
    }
}


Self Permutation

public class Solution {
    public int permuteStrings(String A, String B) {
        if(A.length()!=B.length()){
            return 0;
        }
        char arrA[]=A.toCharArray();
        char arrB[]=B.toCharArray();
        Arrays.sort(arrA);
        Arrays.sort(arrB);
        for(int i=0;i<arrA.length;i++){
            if(arrA[i]!=arrB[i]){
                return 0;
            }
        }
        return 1;
    }
}

Longest Common Prefix

public class Solution {
    public String longestCommonPrefix(String[] A) {
       
        String prefix=A[0];
        for(int i=1;i<A.length;i++){
            while(A[i].indexOf(prefix)!=0){
                prefix=prefix.substring(0,prefix.length()-1);
                if(prefix.isEmpty()){
                return "";
            }
            }
        }
        return prefix;
    }
}

Count And Say

public class Solution {
    public String countAndSay(int A) {
        if(A<=0){
            return "";
        }
        String result="1";
        for(int i=1;i<A;i++){
            StringBuilder b=new StringBuilder();
            char prevChar=result.charAt(0);
            int count=1;
            for(int j=1;j<result.length();j++){
                char currChar=result.charAt(j);
                if(currChar==prevChar){
                    count++;
                }else{
                    b.append(count).append(prevChar);
                    prevChar=currChar;
                    count=1;
                }
            }
            b.append(count).append(prevChar);
            result=b.toString();
        }
        return result;
    }
}


Amazing Subarrays

public class Solution {
    public int solve(String A) {
        int mod=10003;
        int count=0;
        for(int i=0;i<A.length();i++){
        char c=A.charAt(i);
        if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u'||c=='A'||c=='E'||c=='I'||c=='O'||c=='U'){
            count=(count+A.length()-i) % mod;
        }
        }
        return count;
       
    }
}

Convert to Palindrome

public class Solution {
    public int solve(String A) {
        int left=0,right=A.length()-1;
        while(left<right){
            if(A.charAt(left)!=A.charAt(right)){
                return isPalindrome(A.substring(left+1,right+1))||isPalindrome(A.substring(left,right))? 1 : 0;  
        }
        left++;
        right--;
    }
    return 1;
}
public boolean isPalindrome(String S){
    int left=0,right=S.length()-1;
    while(left<right){
        if(S.charAt(left)!=S.charAt(right)){
            return false;
        }
        left++;
        right--;
    }
    return true;
   
}
}

Minimum Appends for Palindrome!

public class Solution {
    public int solve(String A) {
        for(int i=0;i<A.length();i++){
            if(isPalindrome(i,A)){
                return i;
            }
        }
        return A.length();
    }
    public boolean isPalindrome(Integer index,String A){
        int i=index;
        int j=A.length()-1;
        while(i<=j){
            if(A.charAt(i)!=A.charAt(j)){
                return false;
            }
            ++i;
            --j;
        }
        return true;
       
    }
}

Comments