1.4
题目如下:
Write a method to replace all spaces in a string with ‘%20’.
解答如下:
/** * @author feliciafay * @note replace space with Percentage Symbol * @tips 1. manipulate a string from the end, extra buffer will save * us trouble from worrying about overwriting * 2. strings are IMMUTABLE, char arrays are not. * */ public class ReplaceSpaceWithPercentageSymbol { /* * @str: the input string, including the white spaces and the extra space to hold %20. * @trueLength: the length of the string, including the white spaces. */ String replaceSpacewithPercentageSymbol (char[] str, int trueLength) { if (trueLength < 1) { return ""; } int countZero = 0; for (int i = 0; i < trueLength; ++i) { if (str[i] == ' ') { ++countZero; } } int newLength = trueLength + countZero * 2; str[newLength] = '\0'; //设置拷贝新字符串后的间隔符号。 newLength--; for (int i = trueLength - 1; i >=0; --i) { if (str[i] == ' ') { str[newLength] = '0'; str[newLength-1] = '2'; str[newLength-2] = '%'; newLength -=3; } else { str[newLength--] = str[i]; //--newLength; } } String result = new String(str); return result; } public static void main(String[] args) { // TODO Auto-generated method stub ReplaceSpaceWithPercentageSymbol replacesymbol = new ReplaceSpaceWithPercentageSymbol(); char[] chararray = new char[100]; char[] chararray2 = new char[] {'a',' ',' ','b',' ',' ',' '}; System.arraycopy(chararray2, 0, chararray, 0, chararray2.length); System.out.println(replacesymbol.replaceSpacewithPercentageSymbol(chararray, 7)); } }
1.5
题目如下:
implement a method to perform basic string compression using the counts of repeated characters. For example, the string "aabccccaaa" would become a2b1c5a3.
解答如下:
public class BasicStringCompression { String basicStringCompression(String input) { String result = new String(); if (input.length() < 1) return result; char current = input.charAt(0); int count = 1; StringBuilder sb = new StringBuilder(); for (int i = 1; i < input.length(); ++i) { if (input.charAt(i) == current) { ++count; } else { sb.append(current); sb.append(count); current = input.charAt(i); count = 1; } } sb.append(current); sb.append(count); if (sb.length() < input.length()) return sb.toString(); else return input; } public static void main(String[] args) { // TODO Auto-generated method stub String input = "aaaabbcdddd"; BasicStringCompression bsc = new BasicStringCompression(); System.out.println(bsc.basicStringCompression(input)); } }
1.6
题目如下:
Given N*N matrix, rotate it by 90 degree clockwise without extra memory.
解答如下:
//implement the swap index by index. public class RotateImage90Degree { public void Rotate90Degree(int[][] matrix, int degree) { for (int layer = 0; layer < degree/2; ++layer) { int first = layer; int last = degree - layer - 1; int tmp = 0; int offset = 0; for (int i = first; i <last; ++i) { // should be very clear: "<" instead of <= offset = i - first; //top tmp = matrix[first][i]; //top <- left matrix[first][i] = matrix[last - offset][first]; //left <- bottom matrix[last - offset][first] = matrix[last][last - offset]; //bottom <- right matrix[last][last - offset] = matrix[i][last]; // right <- top; matrix[i][last] = tmp; } } return; } public void print_matrix(int[][] matrix, int degrees){ for (int i = 0; i < degrees; ++i) { for (int j = 0; j < degrees; ++j) { System.out.print(matrix[i][j] + " "); } System.out.println(""); } } public static void main(String[] args) { // TODO Auto-generated method stub int [][] my_matrix = {{1,2,3},{4,5,6},{7,8,9}}; int degree = 3; RotateImage90Degree ri9d = new RotateImage90Degree(); ri9d.print_matrix(my_matrix, degree); ri9d.Rotate90Degree(my_matrix, 3); ri9d.print_matrix(my_matrix, degree); } }