SMS splitting
public class Main {
public static void main(String[] args) {
String message = "njdksjfn jdfnds kjfdklsjf jsdofjsd f jdslkjfgdslkngdslkjg fljksdjflsfdsjfdslkfjdslkfmdsklmfgn ljsdglkdsfg d lkjgdslkgjdsljgdslkjgdsfjngds lkjsdlkgjdsgkldsjgsdlkg lkjdslkgjdslkgjdslgmnds glkjgdslkjgdslkjfgodsjfds g,mdsgkjdsngdlsknfgldsjfglkdsjfglkdsjglkdsjglkdsgjdsklgjdslk lkgjdslkgfjdslkgjdslkgjdsljfgdslkgjmdslkg kljghjdslkjgdslkjfg";
List<String> ans = segments(message);
for(String s : ans){
System.out.println(s);
System.out.println(" ");
}
}
public static List<String> segments(String message) {
return getSplits(message);
}
public static List<String> getSplits(String message){
List<String> result = new ArrayList<>();
if (message.length() < 160) {
result.add(message);
return result;
}
int maxlen = 154;
int s = 0, e = s + maxlen;
while (e < message.length()) {
while (e >= s && message.charAt(e) != ' ' && message.charAt(e + 1) != ' ') {
e--;
}
result.add(message.substring(s, e+ 1));
s = e + 1;
e = s + maxlen;
}
result.add(message.substring(s, message.length()));
for (int i = 0; i < result.size(); i++) {
result.set(i, result.get(i).trim()+"(" + (i + 1) + "/" + (result.size()) + ")");
}
return result;
}
}
Product Sort
class Pair{
int value;
int freq;
public Pair(int value, int freq){
this.value = value;
this.freq = freq;
}
}
public class Main {
public static void main(String[] args) {
int[] nums1 = {4,5,6,5,4,3};
int[] nums2 = {8,5,5,5,5,1,1,1,4,4};
System.out.println(Arrays.toString(solve(nums1)));
System.out.println(Arrays.toString(solve(nums2)));
}
private static int[] solve(int[] nums) {
HashMap<Integer, Integer> count = new HashMap<>();
for(int n : nums){
count.put(n, count.getOrDefault(n, 0) + 1);
}
PriorityQueue<Pair> minHeap = new PriorityQueue<>(new Comparator<Pair>(){
public int compare(Pair a, Pair b){
if(a.freq == b.freq){
return a.value - b.value;
}
return a.freq - b.freq;
}
});
for(int n : nums){
Pair p = new Pair(n, count.get(n));
minHeap.offer(p);
}
int[] ans = new int[nums.length];
int i = 0;
while(!minHeap.isEmpty()) ans[i++] = minHeap.poll().value;
return ans;
}
}
Vanity Number Search
// "static void main" must be defined in a public class.
public class Main {
public static void main(String[] args) {
Map<Character, Character>map = new HashMap<>();
map.put('A', '2');
map.put('B', '2');
map.put('C', '2');
map.put('D', '3');
map.put('E', '3');
map.put('F', '3');
map.put('G', '4');
map.put('H', '4');
map.put('I', '4');
map.put('J', '5');
map.put('K', '5');
map.put('L', '5');
map.put('M', '6');
map.put('N', '6');
map.put('O', '6');
map.put('P', '7');
map.put('Q', '7');
map.put('R', '7');
map.put('S', '7');
map.put('T', '8');
map.put('U', '8');
map.put('V', '8');
map.put('W', '9');
map.put('X', '9');
map.put('Y', '9');
map.put('Z', '9');
List<String> name = Arrays.asList("TWLO", "CODE", "HTCH");
List<String> nameToNum = new ArrayList<>();
for(int i = 0; i< name.size(); i++){
String curr = name.get(i);
StringBuilder sb = new StringBuilder();
for(int j = 0; j< curr.length(); j++){
sb.append(map.get(curr.charAt(j)));
}
nameToNum.add(sb.toString());
}
List<String> numbers = Arrays.asList("+17474824380", "+14157088956", "+919810155555", "+15109926333", "+1415123456");
List<String> ans = new ArrayList<>();
for(int i = 0; i< nameToNum.size(); i++){
ans.addAll(findMatch(nameToNum.get(i), numbers));
}
Collections.sort(ans);
for(String s : ans){
System.out.println(s);
}
}
public static Set<String> findMatch(String find, List<String> numbers){
Set<String> result = new HashSet<>();
for(int i = 0; i < numbers.size(); i++) {
if(numbers.get(i).contains(find)) {
result.add(numbers.get(i));
}
}
return result;
}
}