对《程序员面试金典(第5版)》的笔记(2)

程序员面试金典(第5版)
  • 书名: 程序员面试金典(第5版)
  • 作者: [美] Gayle Laakmann McDowell
  • 页数: 372
  • 出版社: 人民邮电出版社
  • 出版年: 2013-11
  • 第28页

    2018-09-22 22:26:09 回应
  • 第108页

    package A20180922;

    import org.junit.Test;

    import java.util.Arrays;

    public class Solution { private static boolean findElement(int[][] matrix, int ele) { int row = 0, col = matrix.length - 1; while (row < matrix.length && col > 0) { if (matrix[row][col] == ele) return true; else if (matrix[row][col] > ele) col--; else row++; } return false; }

    @Test public void test1() { String str = "abcdefg"; int checker = 0; for (int i = 0; i < str.length(); i++) { int val = str.charAt(i) - 'a'; checker |= (1 << val); System.out.println(Integer.toBinaryString(checker)); } // Integer.toHexString(1); }

    public boolean isUniqueChars2(String str) { if (str == null) return true; if (str.length() > 256) return false; boolean[] charSet = new boolean[256]; for (int i = 0; i < str.length(); i++) { int val = str.charAt(i); if (charSet[val]) return false; charSet[val] = true; } return true; }

    public boolean isUniqueChars(String str) { if (str == null) return true; int checker = 0; for (int i = 0; i < str.length(); i++) { int val = str.charAt(i); if ((val & (1 << val)) > 0) return false; checker |= (1 << val); } return true; }

    // brutal force 排序后遍历 @Test public void reverse() { String str = "abcdefghi"; // StringBuilder sb = new StringBuilder(); // sb.append(str).reverse().toString(); char[] chars = str.toCharArray(); int l = 0, r = chars.length - 1; while (l <= r) { char tmp = chars[l]; chars[l++] = chars[r]; chars[r--] = tmp; } String str2 = new String(chars); System.out.println(str2); }

    public boolean permutation(String s, String t) { if (s.length() != t.length()) return false; return sortString(s).equals(sortString(t)); }

    private String sortString(String t) { char[] chars = t.toCharArray(); Arrays.sort(chars); return new String(chars); }

    public boolean permutation2(String s, String t) { if (s.length() != t.length()) return false; int[] cntArr = new int[256];//视编码而定 for (char c : s.toCharArray()) { cntArr[c]++; } for (char c : t.toCharArray()) { if (--cntArr[c] < 0) return false; } return true; }

    public void replaceSpaces(char[] str, int length) { int spaces = 0; for (char c : str) { if (c == ' ') spaces++; } int newLength = length + 2 * spaces; str[newLength] = '\0'; for (int i = length - 1; i >= 0; i--) { if (str[i] == ' ') { str[newLength - 1] = '0'; str[newLength - 2] = '2'; str[newLength - 3] = '%'; newLength = newLength - 2; } else { str[newLength - 1] = str[i]; newLength--; } } }

    public String cpmpressString(String s) { int size = countCompression(s); if (s.length() <= size) return s; StringBuilder sb = new StringBuilder(); char c = s.charAt(0); int cnt = 1; for (int i = 1; i < s.length(); i++) { if (c == s.charAt(i)) { cnt++; } else { sb.append(c); sb.append(cnt); c = s.charAt(i); cnt = 1; } } sb.append(c); sb.append(cnt); return sb.toString();

    }

    private int countCompression(String s) { if (s == null || s.isEmpty()) return 0; char last = s.charAt(0); int size = 0, cnt = 0; for (int i = 1; i < s.length(); i++) { if (last == s.charAt(i)) cnt++; else { last = s.charAt(i); size += 1 + String.valueOf(cnt).length(); cnt = 1; } } size += 1 + String.valueOf(cnt).length(); return size; }

    String compressAlternate(String str) { int size = countCompression(str); if (size >= str.length()) return str; char[] array = new char[size]; int index = 0; char last = str.charAt(0); int count = 0; for (int i = 1; i < str.length(); i++) { if (str.charAt(i) == last) count++; else { index = setChar(array, last, index, count); last = str.charAt(i); count = 1; } } index = setChar(array, last, index, count); return String.valueOf(array); }

    private int setChar(char[] array, char last, int index, int count) { array[index] = last; index++; char[] cnt = String.valueOf(count).toCharArray(); for (char x : cnt) { array[index] = x; index++; } return index; }

    public boolean isRotation(String s1, String s2) { int len = s1.length(); if (len == s2.length() && len > 0) { String s1s1 = s1 + s2; return isSubString(s1s1, s2); } return false; }

    public boolean isSubString(String s1, String s2) { return true; }

    public void setZeros(int[][] matrix) { boolean[] row = new boolean[matrix.length]; boolean[] column = new boolean[matrix[0].length]; for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[0].length; j++) { if (matrix[i][j] == 0) { row[i] = true; column[j] = true; } } } for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[0].length; j++) { if (row[i] || column[j]) { matrix[i][j] = 0; } } } } }

    2018-12-16 18:17:32 回应

的其他笔记  · · · · · ·  ( 全部1110条 )

品牌学
1
万亿指数
1
人类死亡史
3
请教机长
2
预期收益:在不确定市场创造非凡回报
9
經濟學.INFOGRAPHICS視覺資訊大繪解
6
民族与民族主义
18
共產主義
2
On Java 中文版 基础卷
1
预期收益
15
阿尔法经济学
5
CFA一级中文教材
3
我畢業五年,用ETF賺到400萬
16
人为何需要仪式
3
投资的常识
5
图解棒球规则
3
生存还是毁灭
2
因子投资
6
像大师一样投资
1
致命的海滩
1
FOF投资的量化分析
1
决战股市终极方案
1
男权的神话
4
小乌龟投资智慧2
2
股票魔法师
2
每个人的经济学
11
投资精要
3
估值:难点、解决方案及相关案例
1
手把手教你港股打新
2
从投票到暴力
2
巴菲特与索罗斯的投资习惯
2
股市进阶之道
7
中国股神林园炒股秘籍
1
彼得·林奇的成功投资
8
价值的力量
1
投资至简
7
债券投资实战
1
徐远的投资课
27
原则
1
從地理看經濟的44堂公開課
6
完全圖解 從海洋看世界經濟: 從海上貿易、領海攻防, 到石油、天然氣、水產資源的爭奪戰, 看懂世界經濟全貌
5
慢慢变富
3
癌症
1
您厉害,您赚得多
4
投资中不简单的事
9
投资中最简单的事
7
超额收益
2
股市真规则
11
股市长线法宝(原书第5版)
13
大钱细思
5
共同基金常识
8
散户自救法则
1
买入大牛股的9个关键
3
指数基金投资指南
4
七堂课穿越牛熊
4
低风险投资十八种武器
6
低风险投资之路 (第二版)
1
投资大白话
4
你的第一本保险指南
6
躺着赚钱
3
ETF全球投资指南
9
投资最重要的事
14
定投十年财务自由
19
投资
1
现代世界的诞生
1
全球不平等逸史
8
好好赚钱
1
有效资产管理
4
毒家企業
1
how to如何不切实际地解决实际问题
1
迈向财富自由之路
5
美国政党与选举
6
领导力
1
戏剧
1
經濟學.視覺資訊全解讀
12
好的资本主义,坏的资本主义
5
太阳系三环到四环搬迁纪要
1
埃及的革命考古學
1
經濟學人109個世界常識: 藏在5G通訊、表情符號和酒杯尺寸背後的祕密
2
重构
1
为什么不平等至关重要
1
白板
7
邻人之妻
3
秘境
1
白话大数据与机器学习
1
深度学习入门
1
怎样玩转信息
1
民族主义
2
码农翻身
2
数据密集型应用系统设计
2
自闭症
2
瘋狂世界
1
万物起源
1
码出高效:Java开发手册
4
做二休五
1
民主
2
Java Web轻量级开发面试教程
1
海盗经济学
3
法医的眼泪
1
生活中的经济学
2
纪录片
5
数字游戏
3
上一堂最好玩的日本学
1
Java程序员成功面试秘籍
15
程序员面试手册
2
Spring 3.x企业应用开发实战
3
Spring+MyBatis企业应用实战
12
扫地出门
10
数据结构与算法经典问题解析
2
深入分析Java Web技术内幕
3
东京酷玩之旅
1
日本.铁道旅行途中
1
Java程序性能优化
8
宅人的东京
1
Spring实战(第4版)
4
Spring实战(第3版)
1
Java Persistence with MyBatis 3
1
Effective java 中文版(第2版)
15
疯狂Java讲义
13
銀座媽媽桑教的,男人就是吃這套!
1
Java Web技术及应用
1
塑造世界经济的50项伟大发明
1
Java 8实战
2
MySQL技术内幕
1
吴琼琼的彩妆教室
1
风格感觉
1
培養與鍛鍊程式設計的邏輯腦(第二版)
2
明解Java
3
无神论
8
經濟學A-Z速查指南
6
高手
1
经济学语境下的法律规则
4
精通Git(第2版)
3
千年金融史
1
创造性破坏
10
移动的帝国
4
搭地铁游曼谷(第3版)
1
乡下人的悲歌
3
如何有效阅读一本书
1
co-Trip小游趣:东京
1
这就是日本
8
东京攻略完全制霸(第5版)
1
算法图解
14
HTTP/2基础教程
2
政治是什么?
19
为什么有的国家富裕,有的国家贫穷
1
认识管理(第4版)
4
Web应用安全权威指南
22
图解基础设施设计模式
4
PHP7内核剖析
2
经济学的思维方式(原书第13版)
2
图解Java多线程设计模式
1
经营战略全史
4
图解密码技术
10
图解TCP/IP (第5版)
5
斯坦福极简经济学
1
图解HTTP
5
经济学通识课
2
Web应变之道
1
SQL进阶教程
5
SQL基础教程
9
技术之瞳——阿里巴巴技术笔试心得
2
深入理解ES6
11
文案创作完全手册
2
收获,不止SQL优化
8
卧底经济学4
7
知识分子与社会
1
Pretty Good Number One
13
网络是怎样连接的
5
图解设计模式
1
JavaScript权威指南(第6版)
1
JavaScript高级程序设计(第3版)
2
Web性能权威指南
6
JavaScript模式
7
高性能网站建设进阶指南
12
AV男優Q&A
1
黑客攻防技术宝典(第2版)
11
程序员面试攻略(原书第3版)
1
jQuery基础教程(第3版)
5
jQuery 技术内幕
1
李安哲学
1
编写高质量代码
1
HTML5数据推送应用开发
2
酷玩经济学
10
JavaScript忍者秘籍
6
Ruby on Rails Tutorial
5
Modern PHP(中文版)
1
Web前端黑客技术揭秘
5
性存在
5
好色
1
MongoDB权威指南
4
谜男启示录
2
賣淫的倫理學探究
2
嗨翻C语言
1
艺术的疗效
1
高效能程序员的修炼
2
独裁者手册
2
我的涼山兄弟
2
哈利·波特的哲学世界
4
如何高效学习
3
无聊的魅力
2
Web之困:现代Web应用安全指南
1
程序员的思维修炼
1
苦水音乐
1
大转变
1
《生活大爆炸》粉丝升级手册
3
像经济学家一样思考
1
打工女孩
3
经济学常识
1
美国底层生存方式揭秘
1
时尚的哲学
1
被掩盖的经济真相
2
读人
4
平壤水族馆
1
人生的意义
3
浪潮之巅
15
论剽窃
1
你以为你以为的就是你以为的吗?2
5
加图决策者手册
4
不要讓床冷掉
2
社会主义
1
足球经济学
14
享受吧!一個人的SEX
1
快感
2
漫步华尔街
4
一件T恤的全球经济之旅
4
一切皆有价
6
白老虎
3
市场经济:大师们的思考
23
写给无神论者
3
理性乐观派
10
怪诞行为学
5
为什么常识会撒谎
2
价格理论及其应用
9
被捆绑的欲望
2
反对爱情
5
百辩经济学
8
诡辩与真相
57
亲爱的卧底经济学家
4
头条新闻背后的哲学
1
社会学与生活
1
把妹達人之誘惑藝術
3