C1-Arrays and String【Cracking the Coding Interview 习题解答】
来源:互联网 发布:mac os 10.13原版镜像 编辑:程序博客网 时间:2024/06/05 08:09
Cracking the Coding Interview 习题解答 Chapter 1
1.1 Implement an algorithm to determine if a string has all unique characters. What if you can not use additional data structures?
判断字符串是否有重复字符
o(n^2)时间复杂度算法
public boolean hasUnique(String sentence){ for (int i = 0; i < sentence.length(); i++) { for (int j = 0; j < sentence.length(); j++) { if(i!=j && sentence.charAt(i)==sentence.charAt(j)) return false; } } return true;}
o(n)时间复杂度,增加一个Set空间为代价
public boolean hasUnique2(String sentence){ Set<Character> set = new HashSet<Character>(); for (int i = 0; i < sentence.length(); i++) { if(set.contains(sentence.charAt(i))) return false; set.add(sentence.charAt(i)); } return true; }
o(n)时间复杂度,假设字符为ASCII码,进一步减少空间损耗
public boolean hasUnique3(String sentence){ boolean[] char_set = new boolean[256]; for (int i = 0; i < sentence.length(); i++) { int val = sentence.charAt(i); if(char_set[val]) return false; char_set[val] = true; } return true;}
o(n)时间复杂度,假设字符为'a'~'z',进一步减少空间,使用一个int,32位足够表示26个字母
public boolean hasUnique4(String sentence){ int checker = 0; for (int i = 0; i < sentence.length(); i++) { int val = sentence.charAt(i) - 'a'; if((checker & (1 << val)) > 0) return false; checker |= (1 << val); } return true;}
1.2 Write code to reverse a C-Style String. (C-String means that “abcd” is represented as five characters, including the null character.)
反转字符串
java版本
public char[] reverse(char[] cs){ int i=0, j=cs.length-2; while(i<j){ char tmp = cs[j]; cs[j--] = cs[i]; cs[i++] = tmp; } return cs;}
c++版本
void reverse(char *str) {char * end = str;char tmp;if (str) {while (*end) {++end;}--end;while (str < end) {tmp = *str;*str++ = *end;*end-- = tmp;}}}
1.3 Design an algorithm and write code to remove the duplicate characters in a string without using any additional buffer. NOTE: One or two additional variables are fine. An extra copy of the array is not.
FOLLOW UP
Write the test cases for this method.
1.4 Write a method to decide if two strings are anagrams or not.
1.5 Write a method to replace all spaces in a string with ‘%20’.
1.6 Given an image represented by an NxN matrix, where each pixel in the image is 4 bytes, write a method to rotate the image by 90 degrees. Can you do this in place?
1.7 Write an algorithm such that if an element in an MxN matrix is 0, its entire row and column is set to 0.
1.8 Assume you have a method isSubstring which checks if one word is a substring of another. Given two strings, s1 and s2, write code to check if s2 is a rotation of s1 using only one call to isSubstring (i.e., “waterbottle” is a rotation of “erbottlewat”).
- C1-Arrays and String【Cracking the Coding Interview 习题解答】
- Cranking the Coding Interview: C1 Array and String
- Cracking the coding interview--问题与解答
- Cracking the coding interview--问题与解答
- Cracking the coding interview--问题与解答
- Cracking the coding interview--问题与解答
- Cracking the coding interview--问题与解答
- Cracking the coding interview--问题与解答
- Cracking the Coding Interview: Trees and Graphs
- { Cracking The Coding Interview: 150 programming Q&A } --- Arrays and Strings
- Cracking the Coding Interview
- 《Cracking the coding interview》
- Cracking The Coding Interview
- Cracking the coding interview
- Cracking the coding interview
- Cracking the coding interview--问题与解答 目录
- 程序员面试题目:Cracking the coding interview 分析与解答
- Cracking the Coding Interview习题总结(一)
- 安装msdn2008后,导致vs2010 扩展导致异常的解决
- 弱引用 学习笔记(一)
- 64位weblogic11g安装
- 黑马程序员:package、import、jar包介绍
- OC 文件操作 创建和删除API
- C1-Arrays and String【Cracking the Coding Interview 习题解答】
- UI图片处理工具
- Java静态变量的初始化(static块的本质)
- Blocks Programming Topics
- 【DFS】COGS 967. 观光旅游
- 比较器的使用
- spring mvc 返回json 乱码
- Websphere多个应用session相互覆盖问题解决办法
- 怎样实现cmd命令窗口的快速复制粘贴操作