对《程序员面试金典(第5版)》的笔记(2)
读过 程序员面试金典(第5版)
-
第28页
-
第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; } } } } }
的其他笔记 · · · · · · ( 全部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