hs
BAN USERimport java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
public class CostumCompare implements Comparator<String>{
public static String SortedString(String s){
char [] sa = s.toCharArray();
Arrays.sort(sa);
return new String(sa);
}
@Override
public int compare(String o1, String o2) {
// TODO Auto-generated method stub
return this.SortedString(o1).compareTo(this.SortedString(o2));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap<String, ArrayList<String>> hm = new HashMap<String, ArrayList<String>>();
String [] input = {"test","etst","test2","tesst","test"};
for(String s: input){
String sorted = CostumCompare.SortedString(s);
if(hm.containsKey(sorted)){
hm.get(sorted).add(s);
}else{
hm.put(sorted, new ArrayList<String>());
hm.get(sorted).add(s);
}
}
for(String a:hm.keySet()){
System.out.println(hm.get(a));
}
}
Code in Java, complexity is O(N)
public String addBinary(String n1, String n2){
int carry = 0;
int l = Math.min(n1.length(), n2.length());
String answer = "";
for(int i=1; i <= l ; i++){
int digit = (n1.charAt(n1.length()-i) - '0') ^ (n2.charAt(n2.length()-i)- '0') ^ carry;
carry = (carry ==0)?(n1.charAt(n1.length()-i) - '0') & (n2.charAt(n2.length()-i)- '0'):
((n1.charAt(n1.length()-i) - '0') | (n2.charAt(n2.length()-i)- '0')) & carry;
answer = digit+ answer;
}
if(n1.length() > n2.length()){
for(int i= l+1; i <n1.length() ; i++){
int digit = (n1.charAt(n1.length()-i) - '0') ^ carry;
carry = carry & (n1.charAt(n1.length()-i) - '0');
answer = digit+ answer;
}
}
else if(n1.length() < n2.length()){
for(int i= l+1; i <=n2.length() ; i++){
int digit = (n2.charAt(n2.length()-i) - '0') ^ carry;
carry = carry & (n2.charAt(n2.length()-i) - '0');
answer = digit+ answer;
}
}
answer = carry+ answer;
return answer;
}
Code in java. Complexity is O(N)
public String addBinary(String n1, String n2){
int carry = 0;
int l = Math.min(n1.length(), n2.length());
String answer = "";
for(int i=1; i <= l ; i++){
int digit = (n1.charAt(n1.length()-i) - '0') ^ (n2.charAt(n2.length()-i)- '0') ^ carry;
carry = (carry ==0)?(n1.charAt(n1.length()-i) - '0') & (n2.charAt(n2.length()-i)- '0'):
((n1.charAt(n1.length()-i) - '0') | (n2.charAt(n2.length()-i)- '0')) & carry;
answer = digit+ answer;
}
if(n1.length() > n2.length()){
for(int i= l+1; i <n1.length() ; i++){
int digit = (n1.charAt(n1.length()-i) - '0') ^ carry;
carry = carry & (n1.charAt(n1.length()-i) - '0');
answer = digit+ answer;
}
}
else if(n1.length() < n2.length()){
for(int i= l+1; i <=n2.length() ; i++){
int digit = (n2.charAt(n2.length()-i) - '0') ^ carry;
carry = carry & (n2.charAt(n2.length()-i) - '0');
answer = digit+ answer;
}
}
answer = carry+ answer;
return answer;
}
Assume the input is a valid input.
public void reverseWords(String input){
int s = 0;
int e = 0;
for(int i=0; i< input.length() ; i++){
if (input.charAt(i) == ' '){
e = i;
String temp = "";
for(int j = s ; j<e ; j++){
temp = input.charAt(j) + temp;
}
s = e;
System.out.print(temp+" ");
}
}
String temp = "";
for(int j = s ; j<input.length() ; j++){
temp = input.charAt(j) + temp;
}
System.out.println(temp);
}
I don't think that you should increase mid in 2nd case, the swap brings a new number from the end.
- hs May 11, 2015