├── .idea
├── .name
├── copyright
│ └── profiles_settings.xml
├── vcs.xml
├── encodings.xml
└── compiler.xml
├── 061-等差数列
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 080-放苹果
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 029-统计每个月兔子的总数
└── src
│ ├── data.txt
│ ├── solution.png
│ ├── readme.txt
│ └── Main.java
├── 040-(练习用)挑7
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 047-百钱买百鸡问题
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 060-自守数
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 073-查找兄弟单词
└── src
│ ├── readme.txt
│ ├── data2.txt
│ └── Main2.java
├── 092-学英语
└── src
│ ├── data.txt
│ └── readme.md
├── 057-字符串运用-密码截取
└── src
│ ├── data.txt
│ └── readme.txt
├── 066-求解立方根
└── src
│ ├── data.txt
│ ├── 公式.png
│ ├── readme.txt
│ └── Main.java
├── 067-求最小公倍数
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 086-密码强度等级
└── src
│ ├── data.txt
│ └── readme.txt
├── 107-24点运算
└── src
│ ├── data2.txt
│ ├── data.txt
│ └── readme.md
├── 020-简单密码破解
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 045-计算日期到天数转换
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 056-统计大写字母个数
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 065-字符逆序
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 021-汽水瓶
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 023-字符串加解密
└── src
│ ├── data.txt
│ └── readme.txt
├── 034-找出字符串中第一个只出现一次的字符
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 042-矩阵乘法
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 064-记负均正II
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 079-查找组成一个偶数最接近的两个素数
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 019-【中级】单词倒排
└── src
│ ├── data.txt
│ └── readme.txt
├── 028-图片整理
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 033-名字的漂亮度
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 036-iNOC产品部-杨辉三角的变形
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 037-无线OSS高精度整数加法
└── src
│ ├── data3.txt
│ ├── data2.txt
│ ├── data.txt
│ └── readme.txt
├── 039-iNOC产品部--完全数计算
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 049-尼科彻斯定理
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 063-字符串分割
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 089-DNA序列
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 097-24点游戏算法
└── src
│ ├── data.txt
│ └── readme.md
├── 026-字符串加密
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 051-查找组成一个偶数最接近的两个素数
└── src
│ ├── data.txt
│ └── readme.txt
├── 053-字符统计
└── src
│ ├── data.txt
│ └── readme.txt
├── 088-按字节截取字符串
└── src
│ ├── data.txt
│ ├── readme.txt
│ ├── Main.java
│ └── Main2.java
├── 094-多线程
└── src
│ ├── data.txt
│ └── readme.md
├── 105-人民币转换
└── src
│ ├── data.txt
│ └── readme.md
├── 016-坐标移动
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 058-合法IP
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 059-201301-JAVA-题目2-3级
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 072-火车进站
└── src
│ ├── data.txt
│ └── readme.txt
├── 076-蛇形矩阵
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 031-求小球落地5次后所经历的路程和第5次反弹的高度
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 041-求int型数据在内存中存储时1的个数
├── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
└── 041-求int型数据在内存中存储时1的个数.iml
├── 062-表示数字
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 102-二维数组操作
└── src
│ ├── data.txt
│ └── readme.md
├── 022-删除字符串中出现次数最少的字符
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 054-Redraiment的走法
└── src
│ ├── data.txt
│ └── readme.txt
├── 099-MP3光标位置
└── src
│ ├── data.txt
│ └── readme.md
├── 030-整数与IP地址间的转换
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 048-参数解析
└── src
│ ├── data.txt
│ └── readme.txt
├── 084-求最大连续bit数
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 095-四则运算
└── src
│ ├── data.txt
│ └── readme.md
├── 093-从单向链表中删除指定值的节点
└── src
│ ├── data.txt
│ └── readme.md
├── 044-超长正整数相加
└── src
│ ├── data.txt
│ └── readme.txt
├── 082-字符串通配符
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 068-购物单
└── src
│ ├── data2.txt
│ ├── data.txt
│ └── readme.txt
├── ASCII.jpg
├── 104-201301JAVA题目0-1级
└── src
│ ├── data.txt
│ └── readme.md
├── 091-数据分类处理
└── src
│ ├── data.txt
│ └── readme.md
├── 101-将真分数分解为埃及分数
└── src
│ ├── data.txt
│ └── readme.md
├── 103-扑克牌大小
└── src
│ ├── data.txt
│ └── readme.md
├── 032-输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 087-在字符串中找出连续最长的数字串
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 100-配置文件恢复
└── src
│ ├── data.txt
│ ├── readme.md
│ └── data2.txt
├── 069-简单错误记录
└── src
│ ├── data3.txt
│ ├── readme.txt
│ ├── data.txt
│ ├── data4.txt
│ ├── data2.txt
│ ├── Main2.java
│ └── Main.java
├── 075-判断两个IP是否属于同一子网
└── src
│ ├── data.txt
│ ├── test.html
│ └── readme.txt
├── 083-计算字符串的相似度
└── src
│ ├── data.txt
│ └── readme.txt
├── 035-输出单向链表中倒数第k个结点
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 018-识别有效的IP地址和掩码并进行分类统计
└── src
│ ├── data2.txt
│ └── readme.txt
├── out
└── production
│ ├── 002-计算字符个数
│ ├── Main.class
│ └── readme.txt
│ └── 001-字符串最后一个单词的长度
│ ├── Main.class
│ └── readme.txt
├── 024-字符串排序
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 098-矩阵乘法计算量估算
└── src
│ ├── data.txt
│ └── readme.md
├── 077-迷宫问题
└── src
│ ├── data.txt
│ └── readme.txt
├── 106-Sudoku-Java
└── src
│ ├── data.txt
│ ├── data2.txt
│ ├── data3.txt
│ └── readme.md
├── 071-公共子串计算
└── src
│ ├── readme.txt
│ └── data.txt
├── 055-字符串匹配
└── src
│ ├── data.txt
│ ├── readme.txt
│ ├── Main.java
│ └── KMP.java
├── 081-查找两个字符串a-b中的最长公共子串
└── src
│ ├── readme.txt
│ └── data.txt
├── 096-表达式求值
└── src
│ └── readme.md
├── 078-计算字符串的距离
└── src
│ ├── data.txt
│ └── readme.txt
├── 085-记负均正
└── src
│ ├── readme.txt
│ ├── Main.java
│ └── data.txt
├── 052-输入整型数组和排序标识,对其元素按照升序或降序进行排序
└── src
│ ├── readme.txt
│ ├── data.txt
│ └── Main.java
├── 012-字符串反转
└── src
│ ├── readme.txt
│ └── Main.java
├── 005-进制转换
└── src
│ ├── readme.txt
│ └── Main.java
├── 007-取近似值
└── src
│ ├── readme.txt
│ └── Main.java
├── 001-字符串最后一个单词的长度
└── src
│ ├── readme.txt
│ └── Main.java
├── 050-整形数组合并
└── src
│ ├── readme.txt
│ └── data.txt
├── 015-求int型数据在内存中存储时1的个数
└── src
│ ├── readme.txt
│ └── Main.java
├── 010-字符个数统计
└── src
│ ├── readme.txt
│ └── Main.java
├── 011-数字颠倒
└── src
│ ├── readme.txt
│ └── Main.java
├── 002-计算字符个数
└── src
│ ├── readme.txt
│ └── Main.java
├── 025-字符串合并处理
└── src
│ ├── data.txt
│ └── readme.txt
├── 004-字符串分隔
└── src
│ ├── readme.txt
│ └── Main.java
├── template.txt
├── 009-提取不重复的整数
└── src
│ ├── readme.txt
│ └── Main.java
├── 070-记票统计
└── src
│ ├── data.txt
│ ├── readme.txt
│ └── Main.java
├── 006-质数因子
└── src
│ ├── readme.txt
│ └── Main.java
├── 013-句子逆序
└── src
│ ├── readme.txt
│ └── Main.java
├── 090-合唱队
└── src
│ └── readme.txt
├── 017-密码验证合格程序
└── src
│ ├── readme.txt
│ ├── data.txt
│ └── Main.java
├── 014-字串的连接最长路径查找
└── src
│ ├── readme.txt
│ ├── data.txt
│ └── Main.java
├── 027-【中级】字符串运用-密码截取
└── src
│ ├── data.txt
│ └── readme.txt
├── 074-素数伴侣
└── src
│ ├── readme.txt
│ ├── data.txt
│ ├── Main3.java
│ ├── Main.java
│ └── Main2.java
├── 003-明明的随机数
└── src
│ ├── readme.txt
│ └── Main.java
├── 038-输入n个整数,输出其中最小的k个
└── src
│ ├── readme.txt
│ └── data.txt
├── 008-合并表记录
└── src
│ ├── readme.txt
│ └── Main.java
└── 046-成绩排序
└── src
├── readme.txt
├── data.txt
└── Main.java
/.idea/.name:
--------------------------------------------------------------------------------
1 | 华为机试在线训练
--------------------------------------------------------------------------------
/061-等差数列/src/data.txt:
--------------------------------------------------------------------------------
1 | 2
--------------------------------------------------------------------------------
/080-放苹果/src/data.txt:
--------------------------------------------------------------------------------
1 | 7 3
--------------------------------------------------------------------------------
/029-统计每个月兔子的总数/src/data.txt:
--------------------------------------------------------------------------------
1 | 9
--------------------------------------------------------------------------------
/040-(练习用)挑7/src/data.txt:
--------------------------------------------------------------------------------
1 | 20
--------------------------------------------------------------------------------
/047-百钱买百鸡问题/src/data.txt:
--------------------------------------------------------------------------------
1 | 1
--------------------------------------------------------------------------------
/060-自守数/src/data.txt:
--------------------------------------------------------------------------------
1 | 2000
--------------------------------------------------------------------------------
/073-查找兄弟单词/src/readme.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/092-学英语/src/data.txt:
--------------------------------------------------------------------------------
1 | 2356
--------------------------------------------------------------------------------
/057-字符串运用-密码截取/src/data.txt:
--------------------------------------------------------------------------------
1 | ABBA
--------------------------------------------------------------------------------
/066-求解立方根/src/data.txt:
--------------------------------------------------------------------------------
1 | 216
2 | 6
--------------------------------------------------------------------------------
/067-求最小公倍数/src/data.txt:
--------------------------------------------------------------------------------
1 | 5
2 | 7
--------------------------------------------------------------------------------
/086-密码强度等级/src/data.txt:
--------------------------------------------------------------------------------
1 | 38$@NoNoNo
--------------------------------------------------------------------------------
/107-24点运算/src/data2.txt:
--------------------------------------------------------------------------------
1 | 4 2 K 1
--------------------------------------------------------------------------------
/020-简单密码破解/src/data.txt:
--------------------------------------------------------------------------------
1 | YUANzhi1987
--------------------------------------------------------------------------------
/045-计算日期到天数转换/src/data.txt:
--------------------------------------------------------------------------------
1 | 2012 12 31
--------------------------------------------------------------------------------
/056-统计大写字母个数/src/data.txt:
--------------------------------------------------------------------------------
1 | add123#$%#%#O
--------------------------------------------------------------------------------
/065-字符逆序/src/data.txt:
--------------------------------------------------------------------------------
1 | I am a student
--------------------------------------------------------------------------------
/021-汽水瓶/src/data.txt:
--------------------------------------------------------------------------------
1 | 3
2 | 10
3 | 81
4 | 0
--------------------------------------------------------------------------------
/023-字符串加解密/src/data.txt:
--------------------------------------------------------------------------------
1 | abcdefg
2 | BCDEFGH
--------------------------------------------------------------------------------
/034-找出字符串中第一个只出现一次的字符/src/data.txt:
--------------------------------------------------------------------------------
1 | asdfasdfo
--------------------------------------------------------------------------------
/042-矩阵乘法/src/data.txt:
--------------------------------------------------------------------------------
1 | 2 2 2 3 8 8 0 9 0 18 9
--------------------------------------------------------------------------------
/064-记负均正II/src/data.txt:
--------------------------------------------------------------------------------
1 | -13
2 | -4
3 | -7
--------------------------------------------------------------------------------
/079-查找组成一个偶数最接近的两个素数/src/data.txt:
--------------------------------------------------------------------------------
1 | 20
2 | 22
--------------------------------------------------------------------------------
/019-【中级】单词倒排/src/data.txt:
--------------------------------------------------------------------------------
1 | I am a student
--------------------------------------------------------------------------------
/028-图片整理/src/data.txt:
--------------------------------------------------------------------------------
1 | Ihave1nose2hands10fingers
--------------------------------------------------------------------------------
/033-名字的漂亮度/src/data.txt:
--------------------------------------------------------------------------------
1 | 2
2 | zhangsan
3 | lisi
--------------------------------------------------------------------------------
/036-iNOC产品部-杨辉三角的变形/src/data.txt:
--------------------------------------------------------------------------------
1 | 4
2 | 5
3 | 6
--------------------------------------------------------------------------------
/037-无线OSS高精度整数加法/src/data3.txt:
--------------------------------------------------------------------------------
1 | -11000
2 | 1000
--------------------------------------------------------------------------------
/039-iNOC产品部--完全数计算/src/data.txt:
--------------------------------------------------------------------------------
1 | 1000
2 | 2670
--------------------------------------------------------------------------------
/049-尼科彻斯定理/src/data.txt:
--------------------------------------------------------------------------------
1 | 1
2 | 2
3 | 3
4 | 4
5 | 5
--------------------------------------------------------------------------------
/063-字符串分割/src/data.txt:
--------------------------------------------------------------------------------
1 | 2
2 | abc
3 | 123456789
--------------------------------------------------------------------------------
/089-DNA序列/src/data.txt:
--------------------------------------------------------------------------------
1 | AACTGTGCACGACCTGA
2 | 5
--------------------------------------------------------------------------------
/097-24点游戏算法/src/data.txt:
--------------------------------------------------------------------------------
1 | 7 2 1 10
2 | 7 9 10 9
--------------------------------------------------------------------------------
/026-字符串加密/src/data.txt:
--------------------------------------------------------------------------------
1 | TRAILBLAZERS
2 | Attack AT DAWN
--------------------------------------------------------------------------------
/051-查找组成一个偶数最接近的两个素数/src/data.txt:
--------------------------------------------------------------------------------
1 | 20
2 | 10
3 | 12
--------------------------------------------------------------------------------
/053-字符统计/src/data.txt:
--------------------------------------------------------------------------------
1 | aadddccddc
2 | bbbaaaccccddddddd
--------------------------------------------------------------------------------
/088-按字节截取字符串/src/data.txt:
--------------------------------------------------------------------------------
1 | 我ABC汉DEF
2 | 6
3 | rQEBq 4
--------------------------------------------------------------------------------
/094-多线程/src/data.txt:
--------------------------------------------------------------------------------
1 | 1
2 | 2
3 | 3
4 | 4
5 | 5
6 | 10
--------------------------------------------------------------------------------
/105-人民币转换/src/data.txt:
--------------------------------------------------------------------------------
1 | 151121.15
2 | 0.85
3 | 0.29
--------------------------------------------------------------------------------
/016-坐标移动/src/data.txt:
--------------------------------------------------------------------------------
1 | A10;S20;W10;D30;X;A1A;B10A11;;A10;
--------------------------------------------------------------------------------
/058-合法IP/src/data.txt:
--------------------------------------------------------------------------------
1 | 140.131.166.86
2 | 118.-2.162.196
--------------------------------------------------------------------------------
/059-201301-JAVA-题目2-3级/src/data.txt:
--------------------------------------------------------------------------------
1 | 2 2
2 | 1 1
3 | 3 4
--------------------------------------------------------------------------------
/072-火车进站/src/data.txt:
--------------------------------------------------------------------------------
1 | 3
2 | 1 2 3
3 | 8
4 | 8 4 5 6 8 2 1 3
--------------------------------------------------------------------------------
/076-蛇形矩阵/src/data.txt:
--------------------------------------------------------------------------------
1 | 1
2 | 2
3 | 3
4 | 4
5 | 5
6 | 6
7 | 7
--------------------------------------------------------------------------------
/107-24点运算/src/data.txt:
--------------------------------------------------------------------------------
1 | 7 2 A 10
2 | 7 9 10 9
3 | A A A A
--------------------------------------------------------------------------------
/031-求小球落地5次后所经历的路程和第5次反弹的高度/src/data.txt:
--------------------------------------------------------------------------------
1 | 1
2 | 38801
3 | 89108
--------------------------------------------------------------------------------
/037-无线OSS高精度整数加法/src/data2.txt:
--------------------------------------------------------------------------------
1 | 623192091
2 | 14426202982932
3 |
--------------------------------------------------------------------------------
/041-求int型数据在内存中存储时1的个数/src/data.txt:
--------------------------------------------------------------------------------
1 | 0
2 | 1
3 | 2
4 | 3
5 | -1
--------------------------------------------------------------------------------
/062-表示数字/src/data.txt:
--------------------------------------------------------------------------------
1 | Jkdi234klowe90a3
2 | 000Jkdi234klowe90a3
--------------------------------------------------------------------------------
/102-二维数组操作/src/data.txt:
--------------------------------------------------------------------------------
1 | 3 4
2 | 1 1
3 | 0 1
4 | 2
5 | 1
6 | 2 2
--------------------------------------------------------------------------------
/022-删除字符串中出现次数最少的字符/src/data.txt:
--------------------------------------------------------------------------------
1 | abcdd
2 | adfasdf
3 | dsfasf1111333
--------------------------------------------------------------------------------
/054-Redraiment的走法/src/data.txt:
--------------------------------------------------------------------------------
1 | 6
2 | 2
3 | 5
4 | 1
5 | 5
6 | 4
7 | 5
--------------------------------------------------------------------------------
/099-MP3光标位置/src/data.txt:
--------------------------------------------------------------------------------
1 | 10
2 | UUUU
3 | 83
4 | UUDUDDDDUDUUDDDDUDD
--------------------------------------------------------------------------------
/030-整数与IP地址间的转换/src/data.txt:
--------------------------------------------------------------------------------
1 | 10.0.3.193 167969729
2 | 255.0.0.0 11111111
--------------------------------------------------------------------------------
/048-参数解析/src/data.txt:
--------------------------------------------------------------------------------
1 | xcopy /s c:\\\ d:\\\
2 | gqpj /lrl d:\ a:\ c:\ /nkb
--------------------------------------------------------------------------------
/084-求最大连续bit数/src/data.txt:
--------------------------------------------------------------------------------
1 | 1
2 | 2
3 | 3
4 | 4
5 | 5
6 | 6
7 | 7
8 | 8
--------------------------------------------------------------------------------
/095-四则运算/src/data.txt:
--------------------------------------------------------------------------------
1 | -5
2 | (-1+2)*3-4/(5-6)
3 | 3+2*{1+2*[-4/(8-6)+7]}
--------------------------------------------------------------------------------
/093-从单向链表中删除指定值的节点/src/data.txt:
--------------------------------------------------------------------------------
1 | 5
2 | 2
3 | 3 2
4 | 4 3
5 | 5 2
6 | 1 4
7 | 3
--------------------------------------------------------------------------------
/044-超长正整数相加/src/data.txt:
--------------------------------------------------------------------------------
1 | 99999999999999999999999999999999999999999999999999
2 | 1
--------------------------------------------------------------------------------
/082-字符串通配符/src/data.txt:
--------------------------------------------------------------------------------
1 | te?t*.*
2 | txt12.xls
3 | *
4 | adfasdfsd
5 | ???
6 | 123
--------------------------------------------------------------------------------
/068-购物单/src/data2.txt:
--------------------------------------------------------------------------------
1 | 1000 5
2 | 800 2 0
3 | 400 5 1
4 | 300 5 1
5 | 400 3 0
6 | 500 2 0
--------------------------------------------------------------------------------
/ASCII.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wang-Jun-Chao/hawei-online-test/HEAD/ASCII.jpg
--------------------------------------------------------------------------------
/104-201301JAVA题目0-1级/src/data.txt:
--------------------------------------------------------------------------------
1 | 4
2 | 1
3 | 5
4 | -5
5 | 1
6 | 9
7 | 1 -5 5 3 2 1 -2 -5 -2
--------------------------------------------------------------------------------
/091-数据分类处理/src/data.txt:
--------------------------------------------------------------------------------
1 | 15 123 456 786 453 46 7 5 3 665 453456 745 456 786 453 123
2 | 5 6 3 6 3 0
--------------------------------------------------------------------------------
/101-将真分数分解为埃及分数/src/data.txt:
--------------------------------------------------------------------------------
1 | 8/11
2 | 3/7
3 | 13/23
4 | 1/6
5 | 20/33
6 | 19/99
7 | 8/89
8 | 81/95
--------------------------------------------------------------------------------
/103-扑克牌大小/src/data.txt:
--------------------------------------------------------------------------------
1 | 4 4 4 4-joker JOKER
2 | J J J J-3 3 3 3
3 | joker JOKER-K K K K
4 | 10-3 3
--------------------------------------------------------------------------------
/032-输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数/src/data.txt:
--------------------------------------------------------------------------------
1 | 1qazxsw23 edcvfr45tgbn hy67uj m,ki89ol.\\\/;p0-=\\\\][
--------------------------------------------------------------------------------
/066-求解立方根/src/公式.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wang-Jun-Chao/hawei-online-test/HEAD/066-求解立方根/src/公式.png
--------------------------------------------------------------------------------
/087-在字符串中找出连续最长的数字串/src/data.txt:
--------------------------------------------------------------------------------
1 | 123058789
2 | 54761
3 | abcd12345ed125ss123058789
4 | 8749r6k4nugdm04p5b1yhegi8hiq3937
--------------------------------------------------------------------------------
/100-配置文件恢复/src/data.txt:
--------------------------------------------------------------------------------
1 | reset
2 | reset board
3 | board add
4 | board delet
5 | reboot backplane
6 | backplane abort
--------------------------------------------------------------------------------
/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/069-简单错误记录/src/data3.txt:
--------------------------------------------------------------------------------
1 | D:\ig\rud\hmcmbfyypwfpvu 634
2 | C:\hmcmbfyypwfpvu 630
3 | E:\uvmulk\obip\rybma\hmcmbfyypwfpvu 644
--------------------------------------------------------------------------------
/075-判断两个IP是否属于同一子网/src/data.txt:
--------------------------------------------------------------------------------
1 | 255.255.255.0
2 | 192.168.224.256
3 | 192.168.10.4
4 | 255.0
5 | 193.194.202.15
6 | 232.43.7.59
--------------------------------------------------------------------------------
/029-统计每个月兔子的总数/src/solution.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wang-Jun-Chao/hawei-online-test/HEAD/029-统计每个月兔子的总数/src/solution.png
--------------------------------------------------------------------------------
/083-计算字符串的相似度/src/data.txt:
--------------------------------------------------------------------------------
1 | abcdef
2 | abcdefg
3 | prwxwvwbwrbzimabfkuelppjiibbbw
4 | hehcuqxnngzenaynzhyyzodgyzwcixfpgwhbltdnjrthbscv
--------------------------------------------------------------------------------
/035-输出单向链表中倒数第k个结点/src/data.txt:
--------------------------------------------------------------------------------
1 | 8 1 2 3 4 5 6 7 8 4
2 | 14
3 | 5409 9491 8116 9374 8304 4276 5947 9585 1204 4732 675 312 1988 2878
4 | 9
--------------------------------------------------------------------------------
/018-识别有效的IP地址和掩码并进行分类统计/src/data2.txt:
--------------------------------------------------------------------------------
1 | 10.70.44.68~255.254.255.0
2 | 1.0.0.1~255.0.0.0
3 | 192.168.0.2~255.255.255.0
4 | 19..0.~255.255.255.0
--------------------------------------------------------------------------------
/out/production/002-计算字符个数/Main.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wang-Jun-Chao/hawei-online-test/HEAD/out/production/002-计算字符个数/Main.class
--------------------------------------------------------------------------------
/024-字符串排序/src/data.txt:
--------------------------------------------------------------------------------
1 | A Famous Saying: Much Ado About Nothing (2012/8).
2 | #$Y^!#Pf&~#FUyTtAfZhCs&Dly%M@(muOI@Le^mydvc((w$x-cP&t-f$R%CCp)bCck@P-ag
3 |
--------------------------------------------------------------------------------
/out/production/001-字符串最后一个单词的长度/Main.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Wang-Jun-Chao/hawei-online-test/HEAD/out/production/001-字符串最后一个单词的长度/Main.class
--------------------------------------------------------------------------------
/068-购物单/src/data.txt:
--------------------------------------------------------------------------------
1 | 8917 12
2 | 208 3 0
3 | 199 4 0
4 | 133 2 0
5 | 154 4 0
6 | 91 1 0
7 | 222 1 0
8 | 12 3 4
9 | 287 1 1
10 | 237 2 2
11 | 227 5 1
12 | 295 5 6
13 | 28 5 3
14 |
--------------------------------------------------------------------------------
/098-矩阵乘法计算量估算/src/data.txt:
--------------------------------------------------------------------------------
1 | 3
2 | 50 10
3 | 10 20
4 | 20 5
5 | (A(BC))
6 | 8
7 | 61 4
8 | 4 43
9 | 43 52
10 | 52 24
11 | 24 29
12 | 29 37
13 | 37 23
14 | 23 16
15 | (A(B(C(D(E(F(GH))))))))
--------------------------------------------------------------------------------
/077-迷宫问题/src/data.txt:
--------------------------------------------------------------------------------
1 | 5 5
2 | 0 1 0 0 0
3 | 0 1 0 1 0
4 | 0 0 0 0 0
5 | 0 1 1 1 0
6 | 0 0 0 1 0
7 | 6 5
8 | 0 0 0 1 1
9 | 1 1 0 1 1
10 | 1 1 0 0 1
11 | 1 1 1 0 1
12 | 1 1 1 0 1
13 | 1 1 1 0 0
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/106-Sudoku-Java/src/data.txt:
--------------------------------------------------------------------------------
1 | 0 9 2 4 8 1 7 6 3
2 | 4 1 3 7 6 2 9 8 5
3 | 8 6 7 3 5 9 4 1 2
4 | 6 2 4 1 9 5 3 7 8
5 | 7 5 9 8 4 3 1 2 6
6 | 1 3 8 6 2 7 5 9 4
7 | 2 7 1 5 3 8 6 4 9
8 | 3 8 6 9 1 4 2 5 7
9 | 0 4 5 2 7 6 8 3 1
--------------------------------------------------------------------------------
/106-Sudoku-Java/src/data2.txt:
--------------------------------------------------------------------------------
1 | 0 9 5 0 2 0 0 6 0
2 | 0 0 7 1 0 3 9 0 2
3 | 6 0 0 0 0 5 3 0 4
4 | 0 4 0 0 1 0 6 0 7
5 | 5 0 0 2 0 7 0 0 9
6 | 7 0 3 0 9 0 0 2 0
7 | 0 0 9 8 0 0 0 0 6
8 | 8 0 6 3 0 2 1 0 5
9 | 0 5 0 0 7 0 2 8 3
--------------------------------------------------------------------------------
/071-公共子串计算/src/readme.txt:
--------------------------------------------------------------------------------
1 | 公共子串计算
2 |
3 | 题目描述
4 | 计算两个字符串的最大公共子串的长度,字符不区分大小写
5 |
6 | 输入描述:
7 | 输入两个字符串
8 |
9 | 输出描述:
10 | 输出一个整数
11 |
12 | 输入例子:
13 | asdfas werasdfaswer
14 |
15 | 输出例子:
16 | 6
--------------------------------------------------------------------------------
/106-Sudoku-Java/src/data3.txt:
--------------------------------------------------------------------------------
1 | 7 2 6 9 0 4 0 5 1
2 | 0 8 0 6 0 7 4 3 2
3 | 3 4 1 0 8 5 0 0 9
4 | 0 5 2 4 6 8 0 0 7
5 | 0 3 7 0 0 0 6 8 0
6 | 0 9 0 0 0 3 0 1 0
7 | 0 0 0 0 0 0 0 0 0
8 | 9 0 0 0 2 1 5 0 0
9 | 8 0 0 3 0 0 0 0 0
10 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/041-求int型数据在内存中存储时1的个数/src/readme.txt:
--------------------------------------------------------------------------------
1 | 求int型数据在内存中存储时1的个数
2 |
3 | 题目描述
4 | 输入一个int型数据,计算出该int型数据在内存中存储时1的个数。
5 |
6 | 输入描述:
7 | 输入一个整数(int类型)
8 | 输出描述:
9 | 这个数转换成2进制后,输出1的个数
10 |
11 | 输入例子:
12 | 5
13 | 输出例子:
14 | 2
--------------------------------------------------------------------------------
/055-字符串匹配/src/data.txt:
--------------------------------------------------------------------------------
1 | bc abc
2 | jufnsojxgsnswvrsfmwpagmjqidiwqhqfomcnfsqmrckcabmbykdpwwqwctoqctdfbmawplvjtsyqrckidbgnfgwohnraopnavlk
3 | emrnerjquhqdthawyroaqxjxnjwiymnpdunrzmqkgbtaqrivkozwuowvvijrbbhcyzsyaqmhthrexnuighhcuawrwulcqilhaxaakdcfkekmegjbf
--------------------------------------------------------------------------------
/055-字符串匹配/src/readme.txt:
--------------------------------------------------------------------------------
1 | 字符串匹配
2 |
3 | 题目描述
4 | 题目标题:
5 | 判断短字符串中的所有字符是否在长字符串中全部出现
6 |
7 | 输入描述:
8 | 输入两个字符串。第一个为短字符,第二个为长字符。
9 |
10 | 输出描述:
11 | 返回值:true或者false
12 |
13 | 输入例子:
14 | bc
15 | abc
16 |
17 | 输出例子:
18 | true
--------------------------------------------------------------------------------
/067-求最小公倍数/src/readme.txt:
--------------------------------------------------------------------------------
1 | 求最小公倍数
2 |
3 | 题目描述
4 | 正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
5 |
6 | 输入描述:
7 | 输入两个正整数A和B。
8 |
9 | 输出描述:
10 | 输出A和B的最小公倍数。
11 |
12 | 输入例子:
13 | 5
14 | 7
15 |
16 | 输出例子:
17 | 35
--------------------------------------------------------------------------------
/064-记负均正II/src/readme.txt:
--------------------------------------------------------------------------------
1 | 记负均正II
2 |
3 | 题目描述
4 | 从输入任意个整型数,统计其中的负数个数并求所有非负数的平均值
5 |
6 | 输入描述:
7 | 输入任意个整数
8 |
9 | 输出描述:
10 | 输出负数个数以及所有非负数的平均值
11 |
12 | 输入例子:
13 | -13
14 | -4
15 | -7
16 |
17 | 输出例子:
18 | 3
19 | 0.0
--------------------------------------------------------------------------------
/037-无线OSS高精度整数加法/src/data.txt:
--------------------------------------------------------------------------------
1 | 9876543210
2 | 1234567890
3 | -9876543210
4 | -1234567890
5 | -9876543210
6 | 1234567890
7 | 9876543210
8 | -1234567890
9 | 1234567890
10 | -9876543210
11 | -1234567890
12 | 9876543210
13 | 630222
14 | 6450
15 | 1111
16 | 2222
17 |
--------------------------------------------------------------------------------
/079-查找组成一个偶数最接近的两个素数/src/readme.txt:
--------------------------------------------------------------------------------
1 | 查找组成一个偶数最接近的两个素数
2 |
3 | 题目描述
4 | 任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对
5 | 输入描述:
6 | 输入一个偶数
7 |
8 | 输出描述:
9 | 输出两个素数
10 |
11 | 输入例子:
12 | 20
13 |
14 | 输出例子:
15 | 7
16 | 13
--------------------------------------------------------------------------------
/075-判断两个IP是否属于同一子网/src/test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Title
6 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/081-查找两个字符串a-b中的最长公共子串/src/readme.txt:
--------------------------------------------------------------------------------
1 | 查找两个字符串a,b中的最长公共子串
2 |
3 | 题目描述
4 | 查找两个字符串a,b中的最长公共子串
5 |
6 | 输入描述:
7 | 输入两个字符串
8 |
9 | 输出描述:
10 | 返回重复出现的字符
11 |
12 | 输入例子:
13 | abcdefghijklmnop
14 | abcsafjklmnopqrstuvw
15 |
16 | 输出例子:
17 | jklmnop
--------------------------------------------------------------------------------
/051-查找组成一个偶数最接近的两个素数/src/readme.txt:
--------------------------------------------------------------------------------
1 | 查找组成一个偶数最接近的两个素数
2 |
3 | 题目描述
4 | 任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对
5 |
6 | 输入描述:
7 | 输入一个偶数
8 |
9 | 输出描述:
10 | 输出两个素数
11 |
12 | 输入例子:
13 | 20
14 |
15 | 输出例子:
16 | 7
17 | 13
--------------------------------------------------------------------------------
/061-等差数列/src/readme.txt:
--------------------------------------------------------------------------------
1 | 等差数列
2 |
3 | 题目描述
4 | 功能:等差数列 2,5,8,11,14。。。。
5 | 输入:正整数N >0
6 | 输出:求等差数列前N项和
7 | 返回:转换成功返回 0 ,非法输入与异常返回-1
8 |
9 | 输入描述:
10 | 输入一个正整数。
11 |
12 | 输出描述:
13 | 输出一个相加后的整数。
14 |
15 | 输入例子:
16 | 2
17 |
18 | 输出例子:
19 | 7
--------------------------------------------------------------------------------
/101-将真分数分解为埃及分数/src/readme.md:
--------------------------------------------------------------------------------
1 | #题目描述
2 | 分子为1的分数称为埃及分数。现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数。如:8/11 = 1/2+1/5+1/55+1/110。
3 |
4 | #输入描述:
5 | 输入一个真分数,String型
6 |
7 | #输出描述:
8 | 输出分解后的string
9 |
10 | #输入例子:
11 | 8/11
12 |
13 | #输出例子:
14 | 1/2+1/5+1/55+1/110
--------------------------------------------------------------------------------
/096-表达式求值/src/readme.md:
--------------------------------------------------------------------------------
1 | #题目描述
2 | 给定一个字符串描述的算术表达式,计算出结果值。
3 | 输入字符串长度不超过100,合法的字符包括”+, -, *, /, (, )”,”0-9”,字符串内容的合法性及表达式语法
4 | 的合法性由做题者检查。本题目只涉及整型计算。
5 |
6 | #输入描述:
7 | 输入算术表达式
8 |
9 | #输出描述:
10 | 计算出结果值
11 |
12 | #输入例子:
13 | 400+5
14 |
15 | #输出例子:
16 | 405
--------------------------------------------------------------------------------
/087-在字符串中找出连续最长的数字串/src/readme.txt:
--------------------------------------------------------------------------------
1 | 在字符串中找出连续最长的数字串
2 |
3 | 题目描述
4 | 样例输出
5 | 输出123058789,函数返回值9
6 | 输出54761,函数返回值5
7 |
8 | 输入描述:
9 | 输入一个字符串。
10 |
11 | 输出描述:
12 | 输出字符串中最长的数字字符串和它的长度。
13 |
14 | 输入例子:
15 | abcd12345ed125ss123058789
16 |
17 | 输出例子:
18 | 123058789,9
--------------------------------------------------------------------------------
/056-统计大写字母个数/src/readme.txt:
--------------------------------------------------------------------------------
1 | 统计大写字母个数
2 |
3 | 题目描述
4 | 找出给定字符串中大写字符(即'A'-'Z')的个数
5 | 接口说明
6 | 原型:int calcCapital(String str);
7 | 返回值:int
8 |
9 | 输入描述:
10 | 输入一个String数据
11 |
12 | 输出描述:
13 | 输出string中大写字母的个数
14 |
15 | 输入例子:
16 | add123#$%#%#O
17 |
18 | 输出例子:
19 | 1
--------------------------------------------------------------------------------
/078-计算字符串的距离/src/data.txt:
--------------------------------------------------------------------------------
1 | abcdefg
2 | abcdef
3 | ixfkieaaocalmxhfifyadnouljtezrnpnfoenespcaenyvzcjtppsaxegmeytqrkvdwugvouskcnnqnmhepquncvyvgkansquaotkgvlvplktrabaikeuubfupunpztpvvzdqaqgfmtzxlcxsipltzwjegpqjzclclvjsmqbmiyzvcujpvhupyhvhhjq
4 | ganxioafstgdpceecubqrngumbpjvwxdpzmragsunvfnmejbcvsoydtbbewybygpsmmyjuvezn
--------------------------------------------------------------------------------
/085-记负均正/src/readme.txt:
--------------------------------------------------------------------------------
1 | 记负均正
2 |
3 | 题目描述
4 | 首先输入要输入的整数个数n,然后输入n个整数。输出为n个整数中负数的个数,和所有正整数的平均值。
5 |
6 | 输入描述:
7 | 首先输入一个正整数n,
8 | 然后输入n个整数。
9 |
10 | 输出描述:
11 | 输出负数的个数,和所有正整数的平均值。
12 |
13 | 输入例子:
14 | 5
15 | 1
16 | 2
17 | 3
18 | 4
19 | 5
20 |
21 | 输出例子:
22 | 0 3
--------------------------------------------------------------------------------
/052-输入整型数组和排序标识,对其元素按照升序或降序进行排序/src/readme.txt:
--------------------------------------------------------------------------------
1 | 输入整型数组和排序标识,对其元素按照升序或降序进行排序
2 |
3 |
4 | 题目描述
5 | 输入整型数组和排序标识,对其元素按照升序或降序进行排序
6 |
7 | 输入描述:
8 | 1、输入需要输入的整型数个数
9 |
10 | 输出描述:
11 | 输出排好序的数字
12 |
13 | 输入例子:
14 | 8
15 | 1 2 4 9 3 55 64 25
16 | 0
17 |
18 | 输出例子:
19 | 1 2 3 4 9 25 55 64
--------------------------------------------------------------------------------
/084-求最大连续bit数/src/readme.txt:
--------------------------------------------------------------------------------
1 | 求最大连续bit数
2 |
3 | 题目描述
4 | 功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
5 | 输入: 一个byte型的数字
6 | 输出: 无
7 | 返回: 对应的二进制数字中1的最大连续数
8 |
9 | 输入描述:
10 | 输入一个byte数字
11 |
12 | 输出描述:
13 | 输出转成二进制之后连续1的个数
14 |
15 | 输入例子:
16 | 3
17 |
18 | 输出例子:
19 | 2
--------------------------------------------------------------------------------
/012-字符串反转/src/readme.txt:
--------------------------------------------------------------------------------
1 | 字符串反转
2 | 参与人数:18时间限制:1秒空间限制:32768K
3 | 通过比例:22.81%
4 | 最佳记录:0 ms|8460K (来自 kd丹妮儿)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。例如:
9 | 输入描述:
10 |
11 | 输入N个字符
12 |
13 |
14 | 输出描述:
15 |
16 | 输出该字符串反转后的字符串
17 |
18 | 输入例子:
19 |
20 | abcd
21 |
22 | 输出例子:
23 |
24 | dcba
--------------------------------------------------------------------------------
/059-201301-JAVA-题目2-3级/src/readme.txt:
--------------------------------------------------------------------------------
1 | 201301 JAVA 题目2-3级
2 |
3 | 题目描述
4 | 请编写一个函数(允许增加子函数),计算n x m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左
5 | 上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。
6 |
7 | 输入描述:
8 | 输入两个正整数
9 |
10 | 输出描述:
11 | 返回结果
12 |
13 | 输入例子:
14 | 2
15 | 2
16 |
17 | 输出例子:
18 | 6
--------------------------------------------------------------------------------
/088-按字节截取字符串/src/readme.txt:
--------------------------------------------------------------------------------
1 | 按字节截取字符串
2 |
3 | 题目描述
4 | 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,
5 | 如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF"6,应该输出为"我ABC"而不是"我ABC+汉的半个"。
6 |
7 | 输入描述:
8 | 输入待截取的字符串及长度
9 |
10 | 输出描述:
11 | 截取后的字符串
12 |
13 | 输入例子:
14 | 我ABC汉DEF
15 | 6
16 |
17 | 输出例子:
18 | 我ABC
--------------------------------------------------------------------------------
/005-进制转换/src/readme.txt:
--------------------------------------------------------------------------------
1 | 进制转换
2 | 参与人数:31时间限制:1秒空间限制:32768K
3 | 通过比例:25.25%
4 | 最佳记录:0 ms|8460K (来自 WrongAnswer)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。
9 | 输入描述:
10 |
11 | 输入一个十六进制的数值字符串。
12 |
13 |
14 | 输出描述:
15 |
16 | 输出该数值的十进制字符串。
17 |
18 | 输入例子:
19 |
20 | 0xA
21 |
22 | 输出例子:
23 |
24 | 10
--------------------------------------------------------------------------------
/007-取近似值/src/readme.txt:
--------------------------------------------------------------------------------
1 | 取近似值
2 | 参与人数:22时间限制:1秒空间限制:32768K
3 | 通过比例:57.14%
4 | 最佳记录:0 ms|8460K (来自 kd丹妮儿)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 写出一个程序,接受一个浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。
9 | 输入描述:
10 |
11 | 输入一个浮点数值
12 |
13 |
14 | 输出描述:
15 |
16 | 输出该数值的近似整数值
17 |
18 | 输入例子:
19 |
20 | 5.5
21 |
22 | 输出例子:
23 |
24 | 6
--------------------------------------------------------------------------------
/097-24点游戏算法/src/readme.md:
--------------------------------------------------------------------------------
1 | #题目描述
2 |
3 | ##问题描述:
4 | 给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利
5 | 输入:
6 | 4个1-10的数字。[数字允许重复,测试用例保证无异常数字]
7 | 输出:
8 | true or false
9 |
10 | ##输入描述:
11 | 输入4个int整数
12 |
13 | ##输出描述:
14 | 返回能否得到24点,能输出true,不能输出false
15 |
16 | ##输入例子:
17 | 7 2 1 10
18 |
19 | ##输出例子:
20 | true
--------------------------------------------------------------------------------
/001-字符串最后一个单词的长度/src/readme.txt:
--------------------------------------------------------------------------------
1 | 字符串最后一个单词的长度
2 | 参与人数:58时间限制:1秒空间限制:32768K
3 | 通过比例:6.50%
4 | 最佳记录:0 ms|8460K (来自 WrongAnswer)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 计算字符串最后一个单词的长度,单词以空格隔开。
9 | 输入描述:
10 |
11 | 一行字符串,长度小于128。
12 |
13 |
14 | 输出描述:
15 |
16 | 整数N,最后一个单词的长度。
17 |
18 | 输入例子:
19 |
20 | hello world
21 |
22 | 输出例子:
23 |
24 | 5
--------------------------------------------------------------------------------
/050-整形数组合并/src/readme.txt:
--------------------------------------------------------------------------------
1 | 整形数组合并
2 |
3 | 题目描述
4 | 将两个整型数组按照升序合并,并且过滤掉重复数组元素
5 |
6 | 输入描述:
7 | 输入说明,按下列顺序输入:
8 | 1 输入第一个数组的个数
9 | 2 输入第一个数组的数值
10 | 3 输入第二个数组的个数
11 | 4 输入第二个数组的数值
12 |
13 | 输出描述:
14 | 输出合并之后的数组
15 |
16 | 输入例子:
17 | 3
18 | 1 2 5
19 | 4
20 | -1 0 3 2
21 |
22 | 输出例子:
23 | -101235
--------------------------------------------------------------------------------
/015-求int型数据在内存中存储时1的个数/src/readme.txt:
--------------------------------------------------------------------------------
1 | 求int型数据在内存中存储时1的个数
2 | 参与人数:16时间限制:1秒空间限制:32768K
3 | 通过比例:48.39%
4 | 最佳记录:0 ms|8460K (来自 i_square)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 输入一个int型数据,计算出该int型数据在内存中存储时1的个数。
9 | 输入描述:
10 |
11 | 输入一个整数(int类型)
12 |
13 |
14 | 输出描述:
15 |
16 | 这个数转换成2进制后,输出1的个数
17 |
18 | 输入例子:
19 |
20 | 5
21 |
22 | 输出例子:
23 |
24 | 2
--------------------------------------------------------------------------------
/062-表示数字/src/readme.txt:
--------------------------------------------------------------------------------
1 | 表示数字
2 |
3 | 题目描述
4 | 将一个字符中所有出现的数字前后加上符号“*”,其他字符保持不变
5 | public static String MarkNum(String pInStr) {
6 | return null;
7 | }
8 |
9 | 输入描述:
10 | 输入一个字符串
11 |
12 | 输出描述:
13 | 字符中所有出现的数字前后加上符号“*”,其他字符保持不变
14 |
15 | 输入例子:
16 | Jkdi234klowe90a3
17 |
18 | 输出例子:
19 | Jkdi*234*klowe*90*a*3*
--------------------------------------------------------------------------------
/104-201301JAVA题目0-1级/src/readme.md:
--------------------------------------------------------------------------------
1 | #题目描述
2 |
3 | 编写一个函数,传入一个int型数组,返回该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,返回true;不满足时返回false。
4 |
5 | #输入描述:
6 | 输入输入的数据个数
7 |
8 | #输出描述:
9 | 返回true或者false
10 |
11 | #输入例子:
12 | 4
13 | 1
14 | 5
15 | -5
16 | 1
17 |
18 | #输出例子:
19 | true
--------------------------------------------------------------------------------
/out/production/001-字符串最后一个单词的长度/readme.txt:
--------------------------------------------------------------------------------
1 | 字符串最后一个单词的长度
2 | 参与人数:58时间限制:1秒空间限制:32768K
3 | 通过比例:6.50%
4 | 最佳记录:0 ms|8460K (来自 WrongAnswer)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 计算字符串最后一个单词的长度,单词以空格隔开。
9 | 输入描述:
10 |
11 | 一行字符串,长度小于128。
12 |
13 |
14 | 输出描述:
15 |
16 | 整数N,最后一个单词的长度。
17 |
18 | 输入例子:
19 |
20 | hello world
21 |
22 | 输出例子:
23 |
24 | 5
--------------------------------------------------------------------------------
/010-字符个数统计/src/readme.txt:
--------------------------------------------------------------------------------
1 | 字符个数统计
2 | 参与人数:13时间限制:1秒空间限制:32768K
3 | 通过比例:73.68%
4 | 最佳记录:0 ms|8460K (来自 _DdEar)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
9 | 输入描述:
10 |
11 | 输入N个字符,字符在ACSII码范围内(0~127)。
12 |
13 |
14 | 输出描述:
15 |
16 | 输出字符的个数。
17 |
18 | 输入例子:
19 |
20 | abc
21 |
22 | 输出例子:
23 |
24 | 3
--------------------------------------------------------------------------------
/011-数字颠倒/src/readme.txt:
--------------------------------------------------------------------------------
1 | 数字颠倒
2 | 参与人数:14时间限制:1秒空间限制:32768K
3 | 通过比例:59.09%
4 | 最佳记录:0 ms|8460K (来自 _DdEar)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 描述: 输入一个整数,将这个整数以字符串的形式逆序输出 程序不考虑负数的情况,若数字含有0,
9 | 则逆序形式也含有0,如输入为100,则输出为001
10 | 输入描述:
11 |
12 | 输入一个int整数
13 |
14 |
15 | 输出描述:
16 |
17 | 将这个整数以字符串的形式逆序输出
18 |
19 | 输入例子:
20 |
21 | 1516000
22 |
23 | 输出例子:
24 |
25 | 0006151
--------------------------------------------------------------------------------
/002-计算字符个数/src/readme.txt:
--------------------------------------------------------------------------------
1 | 计算字符个数
2 | 参与人数:31时间限制:1秒空间限制:32768K
3 | 通过比例:27.27%
4 | 最佳记录:0 ms|8460K (来自 kd丹妮儿)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
9 | 输入描述:
10 |
11 | 输入一个有字母和数字以及空格组成的字符串,和一个字符。
12 |
13 |
14 | 输出描述:
15 |
16 | 输出输入字符串中含有该字符的个数。
17 |
18 | 输入例子:
19 |
20 | ABCDEF
21 | A
22 |
23 | 输出例子:
24 |
25 | 1
--------------------------------------------------------------------------------
/040-(练习用)挑7/src/readme.txt:
--------------------------------------------------------------------------------
1 | (练习用)挑7
2 | 参与人数:3时间限制:1秒空间限制:32768K
3 | 通过比例:60.00%
4 | 最佳记录:0 ms|8460K (来自 i_square)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 输出7有关数字的个数,包括7的倍数,还有包含7的数字(如17,27,37...70,71,72,73...)的个数
9 | 输入描述:
10 |
11 | 一个正整数N。(N不大于30000)
12 |
13 |
14 | 输出描述:
15 |
16 | 不大于N的与7有关的数字个数,例如输入20,与7有关的数字包括7,14,17.
17 |
18 | 输入例子:
19 |
20 | 20
21 |
22 | 输出例子:
23 |
24 | 3
--------------------------------------------------------------------------------
/025-字符串合并处理/src/data.txt:
--------------------------------------------------------------------------------
1 | dec
2 | fab
3 | DKSq8qykpgKIZxiRKmQ9QkZt909PffE6Gyfc57dBx7p20D42bWJRzKqGGCzzQ4p7Z32Dsx2Cf8G2841lPuAZNb
4 | K0fHodOVFlbl220ov260TPOrmZ328d1E89OatcL88EXr622RdklXtXazO7wMoc6DEKU45eQ5VBUy2YFjgJX
5 | DKSq8qykpgKIZxiRKmQ9QkZt909PffE6Gyfc57dBx7p20D42bWJRzKqGGCzzQ4p7Z32Dsx2Cf8G2841lPuAZNb K0fHodOVFlbl220ov260TPOrmZ328d1E89OatcL88EXr622RdklXtXazO7wMoc6DEKU45eQ5VBUy2YFjgJX
--------------------------------------------------------------------------------
/058-合法IP/src/readme.txt:
--------------------------------------------------------------------------------
1 | 合法IP
2 |
3 | 题目描述
4 | 现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,
5 | 表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址
6 | 串中没有空格出现(因为要表示成一个32数字)。
7 |
8 | 现在需要你用程序来判断IP是否合法。
9 |
10 | 输入描述:
11 | 输入一个ip地址
12 |
13 |
14 | 输出描述:
15 | 返回判断的结果YES or NO
16 |
17 | 输入例子:
18 | 10.138.15.1
19 |
20 | 输出例子:
21 | YES
--------------------------------------------------------------------------------
/066-求解立方根/src/readme.txt:
--------------------------------------------------------------------------------
1 | 求解立方根
2 |
3 | 题目描述
4 | 计算一个数字的立方根,不使用库函数
5 | 详细描述:
6 | 接口说明
7 | 原型:
8 | public static double getCubeRoot(double input)
9 | 输入:double 待求解参数
10 | 返回值:double 输入参数的立方根
11 |
12 | 输入描述:
13 | 待求解参数 double类型
14 |
15 | 输出描述:
16 | 输入参数的立方根 也是double类型
17 |
18 | 输入例子:
19 | 216
20 |
21 | 输出例子:
22 | 6.0
--------------------------------------------------------------------------------
/065-字符逆序/src/readme.txt:
--------------------------------------------------------------------------------
1 | 字符逆序
2 |
3 | 题目描述
4 | 将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。
5 | 如:输入“I am a student”,输出“tneduts a ma I”。
6 |
7 | 输入参数:
8 | inputString:输入的字符串
9 |
10 | 返回值:
11 | 输出转换好的逆序字符串
12 |
13 | 输入描述:
14 | 输入一个字符串,可以有空格
15 |
16 | 输出描述:
17 | 输出逆序的字符串
18 |
19 | 输入例子:
20 | I am a student
21 |
22 | 输出例子:
23 | tneduts a ma I
--------------------------------------------------------------------------------
/out/production/002-计算字符个数/readme.txt:
--------------------------------------------------------------------------------
1 | 计算字符个数
2 | 参与人数:31时间限制:1秒空间限制:32768K
3 | 通过比例:27.27%
4 | 最佳记录:0 ms|8460K (来自 kd丹妮儿)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
9 | 输入描述:
10 |
11 | 输入一个有字母和数字以及空格组成的字符串,和一个字符。
12 |
13 |
14 | 输出描述:
15 |
16 | 输出输入字符串中含有该字符的个数。
17 |
18 | 输入例子:
19 |
20 | ABCDEF
21 | A
22 |
23 | 输出例子:
24 |
25 | 1
--------------------------------------------------------------------------------
/004-字符串分隔/src/readme.txt:
--------------------------------------------------------------------------------
1 | 字符串分隔
2 | 参与人数:33时间限制:1秒空间限制:32768K
3 | 通过比例:24.14%
4 | 最佳记录:0 ms|8460K (来自 石青朱砂)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
9 | 输入描述:
10 |
11 | 连续输入字符串(输入2次,每个字符串长度小于100)
12 |
13 |
14 | 输出描述:
15 |
16 | 输出到长度为8的新字符串数组
17 |
18 | 输入例子:
19 |
20 | abc 123456789
21 |
22 | 输出例子:
23 |
24 | abc00000 12345678 90000000
--------------------------------------------------------------------------------
/047-百钱买百鸡问题/src/readme.txt:
--------------------------------------------------------------------------------
1 | 百钱买百鸡问题
2 |
3 | 题目描述
4 | 公元前五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。
5 | 百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 详细描述: 接口说明 原型: int getResult()
6 |
7 | 输入参数:
8 | 无
9 |
10 | 输出参数
11 | list 鸡翁、鸡母、鸡雏组合的列表
12 |
13 | 输入描述:
14 | 输入任何一个整数,即可运行程序。
15 |
16 | 输入例子:
17 | 1
18 |
19 | 输出例子:
20 | 0 25 75
21 | 4 18 78
22 | 8 11 81
23 | 12 4 84
--------------------------------------------------------------------------------
/template.txt:
--------------------------------------------------------------------------------
1 | public class Main {
2 |
3 | public static void main(String[] args) {
4 | //Scanner scanner = new Scanner(System.in);
5 | Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
6 | while (scanner.hasNext()) {
7 | String input = scanner.nextLine();
8 | }
9 |
10 | scanner.close();
11 | }
12 | }
--------------------------------------------------------------------------------
/009-提取不重复的整数/src/readme.txt:
--------------------------------------------------------------------------------
1 | 提取不重复的整数
2 | 参与人数:12时间限制:1秒空间限制:32768K
3 | 通过比例:60.00%
4 | 最佳记录:0 ms|8460K (来自 C_Niels)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
9 | 输入描述:
10 |
11 | 输入一个int型整数
12 |
13 |
14 | 输出描述:
15 |
16 | 按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
17 |
18 | 如果返的整数以0开头,去掉0;
19 |
20 | 如 intput:1010 output:1
21 |
22 | 输入例子:
23 |
24 | 9876673
25 |
26 | 输出例子:
27 |
28 | 37689
--------------------------------------------------------------------------------
/076-蛇形矩阵/src/readme.txt:
--------------------------------------------------------------------------------
1 | 蛇形矩阵
2 |
3 | 题目描述
4 | 题目说明
5 | 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
6 | 样例输入
7 | 5
8 | 样例输出
9 | 1 3 6 10 15
10 | 2 5 9 14
11 | 4 8 13
12 | 7 12
13 | 11
14 |
15 | 输入描述:
16 | 输入正整数N(N不大于100)
17 |
18 | 输出描述:
19 | 输出一个N行的蛇形矩阵。
20 |
21 | 输入例子:
22 | 4
23 |
24 | 输出例子:
25 | 1 3 6 10
26 | 2 5 9
27 | 4 8
28 | 7
--------------------------------------------------------------------------------
/089-DNA序列/src/readme.txt:
--------------------------------------------------------------------------------
1 | DNA序列
2 |
3 | 题目描述
4 | 一个DNA序列由A/C/G/T四个字母的排列组合组成。G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次
5 | 数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的GC-Ratio可能是基因的起始点。
6 |
7 | 给定一个很长的DNA序列,以及要求的最小子序列长度,研究人员经常会需要在其中找出GC-Ratio最高的子序列。
8 |
9 | 输入描述:
10 | 输入一个string型基因序列,和int型子串的长度
11 |
12 | 输出描述:
13 | 找出GC比例最高的字串
14 |
15 | 输入例子:
16 | AACTGTGCACGACCTGA
17 | 5
18 |
19 | 输出例子:
20 | GCACG
--------------------------------------------------------------------------------
/098-矩阵乘法计算量估算/src/readme.md:
--------------------------------------------------------------------------------
1 | #题目描述
2 | 矩阵乘法的运算量与矩阵乘法的顺序强相关。
3 | 例如:
4 | A是一个50×10的矩阵,B是10×20的矩阵,C是20×5的矩阵
5 | 计算A*B*C有两种顺序:((AB)C)或者(A(BC)),前者需要计算15000次乘法,后者只需要3500次。
6 | 编写程序计算不同的计算顺序需要进行的乘法次数
7 |
8 | #输入描述:
9 | 输入多行,先输入要计算乘法的矩阵个数n,每个矩阵的行数,列数,总共2n的数,最后输入要计算的法则
10 |
11 | #输出描述:
12 | 输出需要进行的乘法次数
13 |
14 | #输入例子:
15 | 3
16 | 50 10
17 | 10 20
18 | 20 5
19 | (A(BC))
20 |
21 | #输出例子:
22 | 3500
--------------------------------------------------------------------------------
/028-图片整理/src/readme.txt:
--------------------------------------------------------------------------------
1 | 图片整理
2 | 参与人数:3时间限制:1秒空间限制:32768K
3 | 通过比例:85.71%
4 | 最佳记录:0 ms|8568K (来自 i_square)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。
9 | 输入描述:
10 |
11 | Lily使用的图片包括"A"到"Z"、"a"到"z"、"0"到"9"。输入字母或数字个数不超过1024。
12 |
13 |
14 | 输出描述:
15 |
16 | Lily的所有图片按照从小到大的顺序输出
17 |
18 | 输入例子:
19 |
20 | Ihave1nose2hands10fingers
21 |
22 | 输出例子:
23 |
24 | 0112Iaadeeefghhinnnorsssv
--------------------------------------------------------------------------------
/057-字符串运用-密码截取/src/readme.txt:
--------------------------------------------------------------------------------
1 | 字符串运用-密码截取
2 |
3 | 题目描述
4 | Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,
5 | 但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。比如进行下列变化 ABBA->12ABBA,ABA->ABAKK,
6 | 123321->51233214 。因为截获的串太长了,而且存在多种可能的情况(abaaab可看作是aba,或baaab的加密形式),
7 | Cathcer的工作量实在是太大了,他只能向电脑高手求助,你能帮Catcher找出最长的有效密码串吗?
8 |
9 | 输入描述:
10 | 输入一个字符串
11 |
12 | 输出描述:
13 | 返回有效密码串的最大长度
14 |
15 | 输入例子:
16 | ABBA
17 |
18 | 输出例子:
19 | 4
--------------------------------------------------------------------------------
/070-记票统计/src/data.txt:
--------------------------------------------------------------------------------
1 | 4
2 | A B C D
3 | 8
4 | A B C D E F G H
5 |
6 | 2
7 | JSAGKLXB KARXHSRFA
8 | 59
9 | KARXHSRFA JSAGKLXB Y Y Y KARXHSRFA JSAGKLXB Y KARXHSRFA JSAGKLXB Y Y JSAGKLXB KARXHSRFA KARXHSRFA JSAGKLXB Y Y KARXHSRFA JSAGKLXB JSAGKLXB JSAGKLXB JSAGKLXB Y KARXHSRFA Y Y Y JSAGKLXB KARXHSRFA JSAGKLXB KARXHSRFA JSAGKLXB Y JSAGKLXB Y KARXHSRFA Y Y KARXHSRFA KARXHSRFA KARXHSRFA KARXHSRFA KARXHSRFA JSAGKLXB Y JSAGKLXB Y Y Y Y JSAGKLXB Y JSAGKLXB Y KARXHSRFA Y Y Y
--------------------------------------------------------------------------------
/033-名字的漂亮度/src/readme.txt:
--------------------------------------------------------------------------------
1 | 名字的漂亮度
2 | 参与人数:4时间限制:1秒空间限制:32768K
3 | 通过比例:57.14%
4 | 最佳记录:0 ms|8552K (来自 i_square)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
9 | 每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。
10 | 给出多个名字,计算每个名字最大可能的“漂亮度”。
11 | 输入描述:
12 |
13 | 整数N,后续N个名字
14 |
15 | N个字符串,每个表示一个名字
16 |
17 |
18 | 输出描述:
19 |
20 | 每个名称可能的最大漂亮程度
21 |
22 | 输入例子:
23 |
24 | 2 zhangsan lisi
25 |
26 | 输出例子:
27 |
28 | 192 101
--------------------------------------------------------------------------------
/022-删除字符串中出现次数最少的字符/src/readme.txt:
--------------------------------------------------------------------------------
1 | 删除字符串中出现次数最少的字符
2 | 参与人数:6时间限制:1秒空间限制:32768K
3 | 通过比例:25.00%
4 | 最佳记录:0 ms|8552K (来自 i_square)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。
9 | 输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
10 |
11 | 其实这道题目有一些问题:不能交换位置,这个关键的信息在题目中间没有进行说明
12 |
13 | 输入描述:
14 |
15 | 字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
16 |
17 |
18 | 输出描述:
19 |
20 | 删除字符串中出现次数最少的字符后的字符串。
21 |
22 | 输入例子:
23 |
24 | abcdd
25 |
26 | 输出例子:
27 |
28 | dd
--------------------------------------------------------------------------------
/105-人民币转换/src/readme.md:
--------------------------------------------------------------------------------
1 | #题目描述
2 | 考试题目和要点:
3 | 1、中文大写金额数字前应标明“人民币”字样。中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样填写。(30分)
4 | 2、中文大写金额数字到“元”为止的,在“元”之后,应写“整字,如¥ 532.00应写成“人民币伍佰叁拾贰元整”。在”角“和”分“后面不写”整字。(30分)
5 | 3、阿拉伯数字中间有“0”时,中文大写要写“零”字,阿拉伯数字中间连续有几个“0”时,中文大写金额中间只写一个“零”字,如¥6007.14,应写成“人民币陆仟零柒元壹角肆分“。
6 |
7 | ##输入描述:
8 | 输入一个double数
9 |
10 | ##输出描述:
11 | 输出人民币格式
12 |
13 | ##输入例子:
14 | 151121.15
15 |
16 | ##输出例子:
17 | 人民币拾伍万壹仟壹佰贰拾壹元壹角伍分
--------------------------------------------------------------------------------
/006-质数因子/src/readme.txt:
--------------------------------------------------------------------------------
1 | 质数因子
2 | 参与人数:16时间限制:1秒空间限制:32768K
3 | 通过比例:24.42%
4 | 最佳记录:0 ms|8460K (来自 牛客738408号)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 ) 详细描述: 函数接口说明: public String getResult(long ulDataInput) 输入参数: long ulDataInput:输入的正整数 返回值: String
9 | 输入描述:
10 |
11 | 输入一个long型整数
12 |
13 |
14 | 输出描述:
15 |
16 | 按照从小到大的顺序输出它的所有质数的因子,以空格隔开
17 |
18 | 输入例子:
19 |
20 | 180
21 |
22 | 输出例子:
23 |
24 | 2 2 3 3 5
--------------------------------------------------------------------------------
/034-找出字符串中第一个只出现一次的字符/src/readme.txt:
--------------------------------------------------------------------------------
1 | 找出字符串中第一个只出现一次的字符
2 | 参与人数:7时间限制:1秒空间限制:32768K
3 | 通过比例:63.64%
4 | 最佳记录:0 ms|8552K (来自 i_square)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 找出字符串中第一个只出现一次的字符 详细描述: 接口说明 原型:
9 | bool FindChar(char* pInputString, char* pChar); 输入参数: char* pInputString:字符串
10 | 输出参数(指针指向的内存区域保证有效): char* pChar:第一个只出现一次的字符 如果无此字符 请输出'.'
11 | 输入描述:
12 |
13 | 输入一串字符
14 |
15 |
16 | 输出描述:
17 |
18 | 输出一个字符
19 |
20 | 输入例子:
21 |
22 | asdfasdfo
23 |
24 | 输出例子:
25 |
26 | o
--------------------------------------------------------------------------------
/069-简单错误记录/src/readme.txt:
--------------------------------------------------------------------------------
1 | 简单错误记录
2 |
3 | 题目描述
4 | 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
5 | 处理:
6 | 1、 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加;
7 | 2、 超过16个字符的文件名称,只记录文件的最后有效16个字符;
8 | 3、 输入的文件可能带路径,记录文件名称不能带路径。
9 |
10 | 输入描述:
11 | 一行或多行字符串。每行包括带路径文件名称,行号,以空格隔开。
12 |
13 | 输出描述:
14 | 将所有的记录统计并将结果输出,格式:文件名 代码行数 数目,一个空格隔开,如:
15 |
16 | 输入例子:
17 | E:\V1R2\product\fpgadrive.c 1325
18 |
19 | 输出例子:
20 | fpgadrive.c 1325 1
--------------------------------------------------------------------------------
/013-句子逆序/src/readme.txt:
--------------------------------------------------------------------------------
1 | 句子逆序
2 | 参与人数:14时间限制:1秒空间限制:32768K
3 | 通过比例:39.39%
4 | 最佳记录:0 ms|8552K (来自 _DdEar)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
9 | 所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符 接口说明 /** * 反转句子 *
10 | * @param sentence 原句子 * @return 反转后的句子 */ public String reverse(String sentence);
11 | 输入描述:
12 |
13 | 将一个英文语句以单词为单位逆序排放。
14 |
15 |
16 | 输出描述:
17 |
18 | 得到逆序的句子
19 |
20 | 输入例子:
21 |
22 | I am a boy
23 |
24 | 输出例子:
25 |
26 | boy a am I
--------------------------------------------------------------------------------
/090-合唱队/src/readme.txt:
--------------------------------------------------------------------------------
1 | 合唱队
2 |
3 | 题目描述
4 | 计算最少出列多少位同学,使得剩下的同学排成合唱队形
5 | 说明:
6 | N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。
7 | 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK,
8 | 则他们的身高满足存在i(1<=i<=K)使得T1Ti+1>......>TK。
9 | 你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。
10 |
11 | 输入描述:
12 | 整数N
13 |
14 | 输出描述:
15 | 最少需要几位同学出列
16 |
17 | 输入例子:
18 | 8
19 | 186 186 150 200 160 130 197 200
20 |
21 | 输出例子:
22 | 4
--------------------------------------------------------------------------------
/041-求int型数据在内存中存储时1的个数/041-求int型数据在内存中存储时1的个数.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/082-字符串通配符/src/readme.txt:
--------------------------------------------------------------------------------
1 | 字符串通配符
2 |
3 | 题目描述
4 | 问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。
5 | 要求:
6 | 实现如下2个通配符:
7 | *:匹配0个或以上的字符(字符由英文字母和数字0-9组成,不区分大小写。下同)
8 | ?:匹配1个字符
9 |
10 | 输入:
11 | 通配符表达式;
12 | 一组字符串。
13 |
14 | 输出:
15 | 返回匹配的结果,正确输出true,错误输出false
16 |
17 | 输入描述:
18 | 先输入一个带有通配符的字符串,再输入一个需要匹配的字符串
19 |
20 | 输出描述:
21 | 返回匹配的结果,正确输出true,错误输出false
22 |
23 | 输入例子:
24 | te?t*.*
25 | txt12.xls
26 |
27 | 输出例子:
28 | false
--------------------------------------------------------------------------------
/017-密码验证合格程序/src/readme.txt:
--------------------------------------------------------------------------------
1 | 密码验证合格程序
2 | 参与人数:6时间限制:1秒空间限制:32768K
3 | 通过比例:45.45%
4 | 最佳记录:0 ms|8568K (来自 i_square)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 密码要求:
9 | 1.长度超过8位
10 | 2.包括大小写字母.数字.其它符号,以上四种至少三种
11 | 3.不能有相同长度超2的子串重复 说明:长度超过2的子串
12 | 输入描述:
13 |
14 | 一组或多组长度超过2的子符串。每组占一行
15 |
16 |
17 | 输出描述:
18 |
19 | 如果符合要求输出:OK,否则输出NG
20 |
21 |
22 |
23 | 每行输出对应一组输入的结果;
24 |
25 | 输入例子:
26 |
27 | 021Abc9000
28 | 021Abc9Abc1
29 | 021ABC9000
30 | 021$bc9000
31 |
32 | 输出例子:
33 |
34 | OK
35 | NG
36 | NG
37 | OK
--------------------------------------------------------------------------------
/092-学英语/src/readme.md:
--------------------------------------------------------------------------------
1 | #题目描述
2 | Jessi初学英语,为了快速读出一串数字,编写程序将数字转换成英文:
3 | 如22:twenty two,123:one hundred and twenty three。
4 |
5 | 说明
6 | 数字为正整数,长度不超过十位,不考虑小数,转化结果为英文小写;
7 | 输出格式为twenty two;
8 | 非法数据请返回“error”;
9 | 关键字提示:and,billion,million,thousand,hundred。
10 |
11 | 方法原型:public static String parse(long num)
12 |
13 | ##输入描述:
14 | 输入一个long型整数
15 |
16 | ##输出描述:
17 | 输出相应的英文写法
18 |
19 | ##输入例子:
20 | 2356
21 |
22 | ##输出例子:
23 | two thousand three hundred and fifty six
--------------------------------------------------------------------------------
/014-字串的连接最长路径查找/src/readme.txt:
--------------------------------------------------------------------------------
1 | 字串的连接最长路径查找
2 | 参与人数:12时间限制:1秒空间限制:32768K
3 | 通过比例:50.00%
4 | 最佳记录:0 ms|8552K (来自 OMG加油)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 给定n个字符串,请对n个字符串按照字典序排列。
9 | 输入描述:
10 |
11 | 输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
12 |
13 |
14 | 输出描述:
15 |
16 | 数据输出n行,输出结果为按照字典序排列的字符串。
17 |
18 | 输入例子:
19 |
20 | 9
21 | cap
22 | to
23 | cat
24 | card
25 | two
26 | too
27 | up
28 | boat
29 | boot
30 |
31 | 输出例子:
32 |
33 | boat
34 | boot
35 | cap
36 | card
37 | cat
38 | to
39 | too
40 | two
41 | up
--------------------------------------------------------------------------------
/039-iNOC产品部--完全数计算/src/readme.txt:
--------------------------------------------------------------------------------
1 | iNOC产品部--完全数计算
2 | 参与人数:2时间限制:1秒空间限制:32768K
3 | 通过比例:80.00%
4 | 最佳记录:0 ms|8460K (来自 i_square)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。 它所有的真因子(即除了自身以外的约数)的和
9 | (即因子函数),恰好等于它本身。 例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,
10 | 1+2+4+7+14=28。 给定函数count(int n),用于计算n以内(含n)完全数的个数。计算范围, 0 < n <= 500000 返回n以
11 | 内完全数的个数。异常情况返回-1
12 |
13 | 输入描述:
14 |
15 | 输入一个数字
16 |
17 |
18 | 输出描述:
19 |
20 | 输出完全数的个数
21 |
22 | 输入例子:
23 |
24 | 1000
25 |
26 | 输出例子:
27 |
28 | 3
--------------------------------------------------------------------------------
/017-密码验证合格程序/src/data.txt:
--------------------------------------------------------------------------------
1 | S^fc8G5-78hlgV3X#96C5+5$b7K4^!#(B39
2 | I)S)1p0485$-ot4N7A9Mc*N3#46^Hd)9)-^Z!J**
3 | F04bA$y6$1CAD4n)x1$9&
4 | 80-~8$~%x-F12P
5 | @!7479Y^V^1$l*26x#2S9%Nx0H!dY78*w4Zl
6 | 16@%^nju+4d04U4*)1l!5+g!^k+P#vq*r#&v2059PsJ
7 | 4@M$68(Oh%!n%~9&08&Z@#+dN0&Z
8 | D*09R~G1-$7GB&()$b1h^A^1b
9 | 80!2b^*t411699+^&4y@
10 | xZ44332BZ-Ck0+ko~19(w!%
11 | )3y@GT!(5V9G(8VeT+(tM3k4
12 | O1r#K$C804E8-41J8*&%#13603
13 | 7v0T+6s!(7*)C4RX8*IB85yk+6&~#v6)q$+W3&8-8+
14 | jJ8~7125d@DGmk~^~m637B20!61M5NdY^9CU9%R$1&h53iO+
15 | 831(l)8^$O+3T
--------------------------------------------------------------------------------
/053-字符统计/src/readme.txt:
--------------------------------------------------------------------------------
1 | 字符统计
2 |
3 | 题目描述
4 | 如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。
5 | 实现以下接口:
6 | 输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用)
7 | 按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出
8 | 清空目前的统计结果,重新统计
9 | 调用者会保证:
10 | 输入的字符串以‘\0’结尾。
11 |
12 | 输入描述:
13 | 输入一串字符。
14 |
15 |
16 | 输出描述:
17 | 对字符中的
18 | 各个英文字符(大小写分开统计),数字,空格进行统计,并按照统计个数由多到少输出,如果统计的个数相同,则按照ASII码由小到大排序输出 。
19 | 如果有其他字符,则对这些字符不用进行统计。
20 |
21 | 输入例子:
22 | aadddccddc
23 |
24 | 输出例子:
25 | dca
--------------------------------------------------------------------------------
/019-【中级】单词倒排/src/readme.txt:
--------------------------------------------------------------------------------
1 | 【中级】单词倒排
2 | 参与人数:9时间限制:1秒空间限制:32768K
3 | 通过比例:41.18%
4 | 最佳记录:0 ms|8552K (来自 _DdEar)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | **题目描述** 对字符串中的所有单词进行倒排。
9 | 说明: 1、每个单词是以26个大写或小写英文字母构成;
10 | 2、非构成单词的字符均视为单词间隔符;
11 | 3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,
12 | 倒排转换后也只允许出现一个空格间隔符;
13 | 4、每个单词最长20个字母;
14 |
15 | **样例输入** I am a student **样例输入** student a am I
16 | 输入描述:
17 |
18 | 输入一行以空格来分隔的句子
19 |
20 |
21 | 输出描述:
22 |
23 | 输出句子的逆序
24 |
25 | 输入例子:
26 |
27 | I am a student
28 |
29 | 输出例子:
30 |
31 | student a am I
--------------------------------------------------------------------------------
/029-统计每个月兔子的总数/src/readme.txt:
--------------------------------------------------------------------------------
1 | 统计每个月兔子的总数
2 | 参与人数:4时间限制:1秒空间限制:32768K
3 | 通过比例:42.86%
4 | 最佳记录:0 ms|8460K (来自 i_square)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
9 | 假如兔子都不死,问每个月的兔子总数为多少?
10 | /** * 统计出兔子总数。 * * @param monthCount 第几个月 *
11 | @return 兔子总数 */ public static int getTotalCount(int monthCount)
12 | { return 0; }
13 | 输入描述:
14 |
15 | 输入int型表示month
16 |
17 |
18 | 输出描述:
19 |
20 | 输出兔子总数int型
21 |
22 | 输入例子:
23 |
24 | 9
25 |
26 | 输出例子:
27 |
28 | 34
--------------------------------------------------------------------------------
/024-字符串排序/src/readme.txt:
--------------------------------------------------------------------------------
1 | 字符串排序
2 | 参与人数:2时间限制:1秒空间限制:32768K
3 | 通过比例:0.00%
4 | 算法知识视频讲解
5 | 题目描述
6 |
7 | 编写一个程序,将输入字符串中的字符按如下规则排序。 规则1:英文字母从A到Z排列,不区分大小写。
8 | 如,输入:Type 输出:epTy 规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。
9 | 如,输入:BabA 输出:aABb 规则3:非英文字母的其它字符保持原来的位置。
10 | 如,输入:By?e 输出:Be?y 样例:
11 | 输入: A Famous Saying: Much Ado About Nothing(2012/8).
12 | 输出: A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).
13 | 输入例子:
14 |
15 | A Famous Saying: Much Ado About Nothing (2012/8).
16 |
17 | 输出例子:
18 |
19 | A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).
--------------------------------------------------------------------------------
/027-【中级】字符串运用-密码截取/src/data.txt:
--------------------------------------------------------------------------------
1 | ABBA
2 | 12ABBA
3 | A
4 | ABAKK
5 | 51233214
6 | abaaab
7 | aadfebadccebcfbafdbfddaeacccbadceefcaaecffdadbacdadafaafddaadcaeafdabcfbbefaddfedefafeefbaaabaeeaaccbbecfbddaedbddbabbecfffbdcdbdcbbacfeefbdbfbcacdecaeeeffebbcdbfdaafbbeaabdfcdcbaafcfbddddbdabcdacbdbceddafedaaadafddddefecfcacfbfbfedeefaadfbfdfddececfaadeecedcdebedacfadebecfddcceedfbdacdbdedceafaacdfffbacceabccabaafbaaefeaefdfeebcbbdcdcbbaefdefdaadadabeeeeefacdeecdebdacfbaabbbbeafdabfbacbeedfaaeafbdbecceccaddafffbcdbeddefcdababafaddadfcadadbddeabcdbabcdeccafbaacbabfaabaaeeefefbccdaa
--------------------------------------------------------------------------------
/060-自守数/src/readme.txt:
--------------------------------------------------------------------------------
1 | 自守数
2 |
3 | 题目描述
4 | 自守数是指一个数的平方的尾数等于该数自身的自然数。例如:252 = 625,762 = 5776,93762 = 87909376。
5 | 请求出n以内的自守数的个数
6 |
7 | 接口说明
8 | /**
9 | * 功能: 求出n以内的自守数的个数
10 | *
11 | * 输入参数:int n
12 | * 返回值:n以内自守数的数量。
13 | */
14 | public static int calcAutomorphicNumbers(int n) {
15 | /*在这里实现功能*/
16 | return 0;
17 | }
18 |
19 | 输入描述:
20 | int型整数
21 |
22 | 输出描述:
23 | n以内自守数的数量。
24 |
25 | 输入例子:
26 | 2000
27 |
28 | 输出例子:
29 | 8
--------------------------------------------------------------------------------
/044-超长正整数相加/src/readme.txt:
--------------------------------------------------------------------------------
1 | 超长正整数相加
2 |
3 | 题目描述
4 | 请设计一个算法完成两个超长正整数的加法。
5 |
6 | 接口说明
7 | /**
8 | * 请设计一个算法完成两个超长正整数的加法。
9 | * 输入参数:
10 | * String addend:加数
11 | * String augend:被加数
12 | * 返回值:加法结果
13 | */
14 | public String addLongInteger(String addend, String augend) {
15 | /*在这里实现功能*/
16 |
17 | return null;
18 | }
19 | 输入描述:
20 | 输入两个字符串数字
21 | 输出描述:
22 | 输出相加后的结果,string型
23 | 输入例子:
24 | 99999999999999999999999999999999999999999999999999
25 | 1
26 | 输出例子:
27 | 100000000000000000000000000000000000000000000000000
--------------------------------------------------------------------------------
/063-字符串分割/src/readme.txt:
--------------------------------------------------------------------------------
1 | 字符串分割
2 |
3 | 题目描述
4 | 连续输入字符串(输出次数为N,字符串长度小于100),请按长度为8拆分每个字符串后输出到新的字符串数组,
5 | 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
6 | 首先输入一个整数,为要输入的字符串个数。
7 | 例如:
8 | 输入:
9 | 2
10 | abc
11 | 12345789
12 | 输出:
13 | abc00000
14 | 12345678
15 | 90000000
16 |
17 | 输入描述:
18 | 首先输入数字n,表示要输入多少个字符串。连续输入字符串(输出次数为N,字符串长度小于100)。
19 |
20 | 输出描述:
21 | 按长度为8拆分每个字符串后输出到新的字符串数组,长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
22 |
23 | 输入例子:
24 | 2
25 | abc
26 | 123456789
27 |
28 | 输出例子:
29 | abc00000
30 | 12345678
31 | 90000000
--------------------------------------------------------------------------------
/021-汽水瓶/src/readme.txt:
--------------------------------------------------------------------------------
1 | 汽水瓶
2 | 参与人数:5时间限制:1秒空间限制:32768K
3 | 通过比例:50.00%
4 | 最佳记录:0 ms|8460K (来自 i_square)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
9 | 输入描述:
10 |
11 | 输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示小张手上的空汽水瓶数。n=0表示输入结束,你的程序
12 | 不应当处理这一行。
13 |
14 |
15 | 输出描述:
16 |
17 | 对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。
18 |
19 | 输入例子:
20 |
21 | 3
22 | 10
23 | 81
24 | 0
25 |
26 | 输出例子:
27 |
28 | 1
29 | 5
30 | 40
--------------------------------------------------------------------------------
/007-取近似值/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015/12/21 16:27
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 |
12 | while (scanner.hasNext()) {
13 | float input = scanner.nextFloat();
14 | System.out.println(floatToNearInt(input));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | private static int floatToNearInt(float f) {
21 | return (int) ((f*10 + 5)/10);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/074-素数伴侣/src/readme.txt:
--------------------------------------------------------------------------------
1 | 素数伴侣
2 |
3 | 题目描述
4 | 若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用于通信加密。
5 | 现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选出若干对组成“素数伴侣”,挑选方案多
6 | 种多样,例如有4个正整数:2,5,6,13,如果将5和6分为一组中只能得到一组“素数伴侣”,而将2和5、6和13
7 | 编组将得到两组“素数伴侣”,能组成“素数伴侣”最多的方案称为“最佳方案”,当然密码学会希望你寻找出“最佳方案”。
8 |
9 | 输入:
10 | 有一个正偶数N(N≤100),表示待挑选的自然数的个数。后面给出具体的数字,范围为[2,30000]。
11 | 输出:
12 | 输出一个整数K,表示你求得的“最佳方案”组成“素数伴侣”的对数。
13 |
14 |
15 | 输入描述:
16 | 输入说明
17 | 1 输入一个正偶数n
18 | 2 输入n个整数
19 |
20 | 输出描述:
21 | 求得的“最佳方案”组成“素数伴侣”的对数。
22 |
23 | 输入例子:
24 | 4
25 | 2 5 6 13
26 |
27 | 输出例子:
28 | 2
--------------------------------------------------------------------------------
/095-四则运算/src/readme.md:
--------------------------------------------------------------------------------
1 | #题目描述
2 |
3 | 请实现如下接口
4 | /* 功能:四则运算
5 | * 输入:strExpression:字符串格式的算术表达式,如: "3+2*{1+2*[-4/(8-6)+7]}"
6 | * 返回:算术表达式的计算结果
7 | */
8 | public static int calculate(String strExpression)
9 | {
10 | /* 请实现*/
11 | return 0;
12 | }
13 | 约束:
14 | pucExpression字符串中的有效字符包括[‘0’-‘9’],‘+’,‘-’, ‘*’,‘/’ ,‘(’, ‘)’,‘[’, ‘]’,‘{’ ,‘}’。
15 | pucExpression算术表达式的有效性由调用者保证;
16 |
17 |
18 |
19 | #输入描述:
20 | 输入一个算术表达式
21 |
22 | #输出描述:
23 | 得到计算结果
24 |
25 | #输入例子:
26 | 3+2*{1+2*[-4/(8-6)+7]}
27 |
28 | #输出例子:
29 | 25
--------------------------------------------------------------------------------
/080-放苹果/src/readme.txt:
--------------------------------------------------------------------------------
1 | 放苹果
2 |
3 | 题目描述
4 | 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
5 | 输入
6 | 每个用例包含二个整数M和N。0<=m<=10,1<=n<=10。<=n<=10<=m<=10
7 | 样例输入
8 | 7 3
9 | 样例输出
10 | 8
11 |
12 | /**
13 | * 计算放苹果方法数目
14 | * 输入值非法时返回-1
15 | * 1 <= m,n <= 10<><= m,n <= 10<>
16 | * @param m 苹果数目
17 | * @param n 盘子数目数
18 | * @return 放置方法总数
19 | */
20 | public static int count(int m, int n) {
21 | return 0;
22 | }
23 |
24 | 输入描述:
25 | 输入两个int整数
26 |
27 | 输出描述:
28 | 输出结果,int型
29 |
30 | 输入例子:
31 | 7 3
32 |
33 | 输出例子:
34 | 8
--------------------------------------------------------------------------------
/014-字串的连接最长路径查找/src/data.txt:
--------------------------------------------------------------------------------
1 | 54
2 | MGDa
3 | aha
4 | BDTmfV
5 | ShOBHM
6 | QqFdcsFk
7 | WeSj
8 | YDyBY
9 | RldCiGFB
10 | h
11 | gLmLEXW
12 | pWOJywCx
13 | eFcUlSfaH
14 | krFjsPC
15 | Vv
16 | viYTX
17 | bhkHwulzFC
18 | Ya
19 | R
20 | EEhgyd
21 | zM
22 | IHp
23 | pSDmVZ
24 | oAeSLWTtd
25 | bZO
26 | F
27 | kD
28 | TqPZ
29 | hI
30 | ITwU
31 | BMpsBRkQ
32 | ZQhOGB
33 | LCvYTEqHqA
34 | flp
35 | Bcc
36 | VDEtYbz
37 | uprsKe
38 | zJYEEPiVkL
39 | KYUwgtJfL
40 | vVZp
41 | AmnaxgeA
42 | QwDXJQOxNU
43 | thkhsKEMBr
44 | zM
45 | DxnWRwnfh
46 | PDYaSCbwmR
47 | n
48 | kG
49 | KfDD
50 | tLpaLPqBaj
51 | oXBLTJGo
52 | pnEwvEHhic
53 | WzMfONKYG
54 | CiFcccEh
55 | vfKRxZbLhq
--------------------------------------------------------------------------------
/003-明明的随机数/src/readme.txt:
--------------------------------------------------------------------------------
1 | 明明的随机数
2 | 参与人数:41时间限制:1秒空间限制:32768K
3 | 通过比例:12.83%
4 | 最佳记录:0 ms|8460K (来自 石青朱砂)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。 Input Param n 输入随机数的个数 inputArray n个随机整数组成的数组 Return Value OutputArray 输出处理后的随机整数 注:测试用例保证输入参数的正确性,答题者无需验证。
9 | 输入描述:
10 |
11 | 输入多行,先输入随机整数的个数,在输入相应个数的整数
12 |
13 |
14 | 输出描述:
15 |
16 | 返回多行,处理后的结果
17 |
18 | 输入例子:
19 |
20 | 11 10 20 40 32 67 40 20 89 300 400 15
21 |
22 | 输出例子:
23 |
24 | 10 15 20 32 40 67 89 300 400
--------------------------------------------------------------------------------
/035-输出单向链表中倒数第k个结点/src/readme.txt:
--------------------------------------------------------------------------------
1 | 输出单向链表中倒数第k个结点
2 | 参与人数:6时间限制:1秒空间限制:32768K
3 | 通过比例:72.73%
4 | 最佳记录:0 ms|8552K (来自 wtff)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针。 链表结点定义如下:
9 | struct ListNode { int m_nKey; ListNode* m_pNext; }; 详细描述: 接口说明
10 | 原型: ListNode* FindKthToTail(ListNode* pListHead, unsignedint k); 输入参数:
11 | ListNode* pListHead 单向链表 unsigned int k 倒数第k个结点 输出参数(指针指向的内存区域保证有效):
12 | 无 返回值: 正常返回倒数第k个结点指针,异常返回空指针
13 | 输入描述:
14 |
15 | 输入说明
16 | 1 输入链表结点个数
17 | 2 输入链表的值
18 | 3 输入k的值
19 |
20 |
21 | 输出描述:
22 |
23 | 输出一个整数
24 |
25 | 输入例子:
26 |
27 | 8 1 2 3 4 5 6 7 8 4
28 |
29 | 输出例子:
30 |
31 | 4
--------------------------------------------------------------------------------
/038-输入n个整数,输出其中最小的k个/src/readme.txt:
--------------------------------------------------------------------------------
1 | 输入n个整数,输出其中最小的k个
2 | 参与人数:6时间限制:1秒空间限制:32768K
3 | 通过比例:28.12%
4 | 最佳记录:0 ms|8552K (来自 i_square)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 输入n个整数,输出其中最小的k个。 详细描述: 接口说明
9 | 原型: bool GetMinK(unsignedint uiInputNum, int * pInputArray, unsignedint uiK, int * pOutputArray);
10 | 输入参数: unsignedint uiInputNum //输入整数个数 int * pInputArray //输入整数数组 unsignedint uiK
11 | //需输出uiK个整数 输出参数(指针指向的内存区域保证有效): int * pOutputArray //最小的uiK个整数
12 | 返回值: false 异常失败 true 输出成功
13 | 输入描述:
14 |
15 | 输入说明
16 | 1 输入两个整数
17 | 2 输入一个整数数组
18 |
19 |
20 | 输出描述:
21 |
22 | 输出一个整数数组
23 |
24 | 输入例子:
25 |
26 | 5 2 1 3 5 7 2
27 |
28 | 输出例子:
29 |
30 | 1 2
--------------------------------------------------------------------------------
/054-Redraiment的走法/src/readme.txt:
--------------------------------------------------------------------------------
1 | Redraiment的走法
2 | 题目描述
3 |
4 | 题目描述
5 | Redraiment是走梅花桩的高手。Redraiment总是起点不限,从前到后,往高的桩子走,但走的步数最多,不知道为什么?
6 | 你能替Redraiment研究他最多走的步数吗?
7 |
8 | 样例输入
9 | 6
10 | 2 5 1 5 4 5
11 |
12 | 样例输出
13 | 3
14 |
15 | 提示
16 | Example:
17 | 6个点的高度各为 2 5 1 5 4 5
18 | 如从第1格开始走,最多为3步, 2 4 5
19 | 从第2格开始走,最多只有1步,5
20 | 而从第3格开始走最多有3步,1 4 5
21 | 从第5格开始走最多有2步,4 5
22 | 所以这个结果是3。
23 |
24 | 输入描述:
25 | 输入多行,先输入数组的个数,再输入相应个数的整数
26 |
27 | 输出描述:
28 | 输出结果
29 |
30 | 输入例子:
31 | 6
32 | 2
33 | 5
34 | 1
35 | 5
36 | 4
37 | 5
38 |
39 | 输出例子:
40 | 3
--------------------------------------------------------------------------------
/048-参数解析/src/readme.txt:
--------------------------------------------------------------------------------
1 | 参数解析
2 |
3 | 题目描述
4 | 在命令行输入如下命令: xcopy /s c:\ d:\, 各个参数如下:
5 | 参数1:命令字xcopy
6 | 参数2:字符串/s
7 | 参数3:字符串c:\
8 | 参数4: 字符串d:\
9 | 请编写一个参数解析程序,实现将命令行各个参数解析出来。
10 |
11 | 解析规则:
12 | 1.参数分隔符为空格
13 | 2.对于用“”包含起来的参数,如果中间有空格,不能解析为多个参数。
14 | 比如在命令行输入xcopy /s “C:\program files” “d:\”时,参数仍然是4个,
15 | 第3个参数应该是字符串C:\program files,而不是C:\program,注意输出参数时,需要将“”去掉,引号不存在嵌套情况。
16 | 3.参数不定长
17 | 4.输入由用例保证,不会出现不符合要求的输入
18 | 输入描述:
19 | 输入一行字符串,可以有空格
20 |
21 |
22 | 输出描述:
23 | 输出参数个数,分解后的参数,每个参数都独占一行
24 |
25 | 输入例子:
26 | xcopy /s c:\\\ d:\\\
27 |
28 | 输出例子:
29 | 4
30 | xcopy
31 | /s
32 | c:\\\
33 | d:\\\
--------------------------------------------------------------------------------
/008-合并表记录/src/readme.txt:
--------------------------------------------------------------------------------
1 | 合并表记录
2 | 参与人数:12时间限制:1秒空间限制:32768K
3 | 通过比例:9.80%
4 | 最佳记录:0 ms|8552K (来自 _DdEar)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 数据表记录包含表索引和数值。请对表索引相同的记录进行合并,合并后表记录为相同索引表的数值求和
9 | 函数说明: public int mergeRecord(List oriList, List rstList) 数据表记录包含表索引和数值。
10 | 请对表索引相同的记录进行合并,合并后表记录为相同索引表的数值求和。 @param oriList 原始表记录。
11 | 以List方式存放,TableRecord定义见TableRecord.java,
12 | 调用者无需对leRecord.java做任何修改 @param rstList 合并后的表记录 , 以List方式存放
13 | @return 返回合并后表的个数
14 | 输入描述:
15 |
16 | 先输入键值对的个数
17 | 然后输入成对的index和value值,以换行符隔开
18 |
19 |
20 | 输出描述:
21 |
22 | 输出合并后的键值对,一个键值对一行,顺序保持原表中的顺序
23 |
24 | 输入例子:
25 |
26 | 4
27 | 0 1
28 | 0 2
29 | 1 2
30 | 3 4
31 |
32 | 输出例子:
33 |
34 | 0 3
35 | 1 2
36 | 3 4
--------------------------------------------------------------------------------
/030-整数与IP地址间的转换/src/readme.txt:
--------------------------------------------------------------------------------
1 | 整数与IP地址间的转换
2 | 参与人数:1时间限制:1秒空间限制:32768K
3 | 通过比例:0.00%
4 | 算法知识视频讲解
5 | 题目描述
6 |
7 | 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成 一个长整数。
8 | 举例:一个ip地址为10.0.3.193 每段数字
9 | 相对应的二进制数 10 00001010 0
10 | 00000000 3 00000011 193
11 | 11000001 组合起来即为:
12 | 00001010 00000000 00000011 11000001,
13 | 转换为10进制数就是:167773121,
14 | 即该IP地址转换后的数字就是它了。
15 | 的每段可以看成是一个0-255的整数,需要对IP地址进行校验
16 | 输入描述:
17 |
18 | 输入
19 | 1 输入IP地址
20 | 2 输入10进制型的IP地址
21 |
22 |
23 | 输出描述:
24 |
25 | 输出
26 | 1 输出转换成10进制的IP地址
27 | 2 输出转换后的IP地址
28 |
29 | 输入例子:
30 |
31 | 10.0.3.193 167969729
32 |
33 | 输出例子:
34 |
35 | 167773121 10.3.3.193
--------------------------------------------------------------------------------
/074-素数伴侣/src/data.txt:
--------------------------------------------------------------------------------
1 | 4
2 | 2 5 6 13
3 | 62
4 | 9360 2272 15078 15571 4734 18667 10392 17796 12207 14591 8380 10126 11627 1288 24523 568 15754 8400 11280 20964 15482 28433 26109 11147 9628 12296 8500 21628 22561 5532 8830 13253 3231 15580 27278 4824 19217 16038 10091 21071 19587 10243 8786 15529 23644 13228 21503 22706 13546 2937 24488 19924 16138 13815 22460 4122 26823 2987 25011 25469 27224 16237
5 | 58
6 | 621 10618 19556 29534 25791 11133 5713 26642 25994 16095 6618 11447 29386 24436 22551 21467 2633 25704 29460 24325 8964 4087 10560 6478 9615 5119 1114 6773 9409 21549 15336 18995 2151 27404 6296 21066 3147 27037 6177 5650 16224 14352 8999 991 3012 16447 17799 16265 27163 24118 9766 15355 6161 3909 19451 16838 9113 10877
--------------------------------------------------------------------------------
/093-从单向链表中删除指定值的节点/src/readme.md:
--------------------------------------------------------------------------------
1 | #题目描述
2 | 输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。
3 | 链表结点定义如下:
4 | struct ListNode
5 | {
6 | int m_nKey;
7 | ListNode* m_pNext;
8 | };
9 | 详细描述:
10 | 本题为考察链表的插入和删除知识。
11 | 链表的值不能重复
12 | 构造过程,例如
13 | 1 -> 2
14 | 3 -> 2
15 | 5 -> 1
16 | 4 -> 5
17 | 7 -> 2
18 | 最后的链表的顺序为 2 7 3 1 5 4
19 | 删除 结点 2
20 | 则结果为 7 3 1 5 4
21 |
22 | ##输入描述:
23 | 1 输入链表结点个数
24 | 2 输入头结点的值
25 | 3 按照格式插入各个结点
26 | 4 输入要删除的结点的值
27 |
28 | ##输出描述:
29 | 输出删除结点后的序列
30 |
31 | ##输入例子:
32 | 5
33 | 2
34 | 3 2
35 | 4 3
36 | 5 2
37 | 1 4
38 | 3
39 |
40 | ##输出例子:
41 | 2 1 5 4
--------------------------------------------------------------------------------
/023-字符串加解密/src/readme.txt:
--------------------------------------------------------------------------------
1 | 字符串加解密
2 | 参与人数:2时间限制:1秒空间限制:32768K
3 | 通过比例:33.33%
4 | 最佳记录:39 ms|654K (来自 小小沸沸要加油)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 题目描述 1、对输入的字符串进行加解密,并输出。
9 | 2加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;
10 | 字母Z时则替换为a; 当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0; 其他字符不做变化。 3、解密方法为加密的逆过程。 接口描述: 实现接口,每个接口实现1个基本操作: void Encrypt (char aucPassword[], char aucResult[]):在该函数中实现字符串加密并输出 说明: 1、字符串以\0结尾。 2、字符串最长100个字符。 int unEncrypt (char result[], char password[]):在该函数中实现字符串解密并输出 说明: 1、字符串以\0结尾。 2、字符串最长100个字符。
11 | 输入描述:
12 |
13 | 输入说明
14 | 输入一串要加密的密码
15 | 输入一串加过密的密码
16 |
17 |
18 | 输出描述:
19 |
20 | 输出说明
21 | 输出加密后的字符
22 | 输出解密后的字符
23 |
24 | 输入例子:
25 |
26 | abcdefg BCDEFGH
27 |
28 | 输出例子:
29 |
30 | BCDEFGH abcdefg
--------------------------------------------------------------------------------
/046-成绩排序/src/readme.txt:
--------------------------------------------------------------------------------
1 | 成绩排序
2 |
3 | 题目描述
4 | 查找和排序 题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
5 | 都按先录入排列在前的规则处理。
6 | 例示:
7 | jack 70
8 | peter 96
9 | Tom 70
10 | smith 67
11 | 从高到低 成绩
12 | peter 96
13 | jack 70
14 | Tom 70
15 | smith 67
16 | 从低到高
17 | smith 67
18 | Tom 70
19 | jack 70
20 | peter 96
21 | 输入描述:
22 | 输入多行,先输入要排序的人的个数,然后分别输入他们的名字和成绩,以一个空格隔开
23 | 用户名字,字符串,非空串,长度不超过20;
24 | 成绩,整数,范围【0,100】
25 | 输入排序方式,0或1,0表示成绩从高到低方式输出名字和成绩,1表示成绩从低到高方式输出名字和成绩
26 |
27 |
28 | 输出描述:
29 | 按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开
30 |
31 | 输入例子:
32 | 3 0 fang 90 yang 50 ning 70
33 |
34 | 输出例子:
35 | fang 90 ning 70 yang 50
--------------------------------------------------------------------------------
/015-求int型数据在内存中存储时1的个数/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015/12/22 14:25
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 |
10 | public static void main(String[] args) {
11 | Scanner scanner = new Scanner(System.in);
12 |
13 | while (scanner.hasNext()) {
14 | int input = scanner.nextInt();
15 | System.out.println(countOnes(input));
16 | }
17 |
18 | scanner.close();
19 | }
20 |
21 | private static int countOnes(int input) {
22 | int result = 0;
23 |
24 | while (input != 0) {
25 | result += input & 1;
26 | input >>>= 1;
27 | }
28 |
29 | return result;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/071-公共子串计算/src/data.txt:
--------------------------------------------------------------------------------
1 | asdfas
2 | werasdfaswer
3 | ABCBDAB
4 | BDCABA
5 | vfavicnxxavedndfolucetmnhhmvcvaruzodhhdfefdcyxhqamoqsmndrzzupqovmphfhhgociplztujzmcakgmrgofrabbfcgkxvlwfzzrgoznrxlxinzbcaahxsdmcixdrivfwvnqeiaihtiatyizktmkhzblgdykbhlhqpcxvhiyprzhlbdwxuibcwqmtlroqevwkhqgeggzmpoemdgfrjygpfauiahpwakicgfhfeomghzfynghtfabicvvjaewqwmftqetnb
6 | uqcceuyqsszrrrufytxevjggoklrltlqlyygihldushbbhotbucjlqoiejasrsvaxknpgoyiemijxnsofavlaxwdcueocryspurygdmglhkrvghtciqluoqjsfalxhzfodgsrpphvtuwmagdyjppsyxcpyidzzofixxktymglrvapmrrwdlcapcnwifaejhdvaoxsdgxmggtlhreswjpilddyayuppftrczffunsqzwnsrhuhzxfamgqcjjgicozcphabgnijwrgqhgyidurcagnshvmqjttgdeckqfsnjhfnpueqwfxjvyqndmkjwbwhpgyhzirsdkjqywslsngmhchsjrwlwdahndoednibgjhtaijbkedlfuiepoapkstvokakostwglvgadxxzphewdwegvcreumxmtouvjxsadnlxileycrs
--------------------------------------------------------------------------------
/027-【中级】字符串运用-密码截取/src/readme.txt:
--------------------------------------------------------------------------------
1 | 【中级】字符串运用-密码截取
2 | 参与人数:0时间限制:1秒空间限制:32768K
3 | 通过比例:0.00%
4 | 算法知识视频讲解
5 | 题目描述
6 |
7 | Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,
8 | 比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。
9 | 比如进行下列变化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 。
10 | 因为截获的串太长了,而且存在多种可能的情况(abaaab可看作是aba,或baaab的加密形式),
11 | Cathcer的工作量实在是太大了,他只能向电脑高手求助,你能帮Catcher找出最长的有效密码串吗?
12 | 样例输入: ABBA 12ABBA A ABAKK 51233214 abaaab 样例输出: 4 4 1 3 6 5 可以使用中提供
13 | 的库函数。 实现接口,每个接口实现1个基本操作: voidGetCipherMaxLen(characCipherContent[],
14 | int *piCipherLen): acCipherContent是一个字符串数组常量,见参考用例; piCipherLen为输出有
15 | 效密码串的最大长度; 题目框架中有2个参考用例,其它用例请执行编写。
16 | 输入描述:
17 |
18 | 输入一串字符
19 |
20 |
21 | 输出描述:
22 |
23 | 输出有效长度
24 |
25 | 输入例子:
26 |
27 | ABBA
28 |
29 | 输出例子:
30 |
31 | 4
--------------------------------------------------------------------------------
/049-尼科彻斯定理/src/readme.txt:
--------------------------------------------------------------------------------
1 | 尼科彻斯定理
2 |
3 | 题目描述
4 | 验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
5 | 例如:
6 | 1^3=1
7 | 2^3=3+5
8 | 3^3=7+9+11
9 | 4^3=13+15+17+19
10 |
11 | 接口说明
12 | 原型:
13 | /*
14 | * 功能: 验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
15 | * 原型:
16 | * int getSequeOddNum(int m);
17 | * 输入参数:
18 | * int m:整数(取值范围:1~100)
19 | *
20 | * 返回值:
21 | * m个连续奇数(格式:“7+9+11”);
22 | */
23 | public String GetSequeOddNum(int m) {
24 | /*在这里实现功能*/
25 | return null;
26 | }
27 |
28 | 输入描述:
29 | 输入一个int整数
30 |
31 | 输出描述:
32 | 输出分解后的string
33 |
34 | 输入例子:
35 | 6
36 |
37 | 输出例子:
38 | 31+33+35+37+39+41
--------------------------------------------------------------------------------
/072-火车进站/src/readme.txt:
--------------------------------------------------------------------------------
1 | 火车进站
2 |
3 | 题目描述
4 | 给定一个正整数N代表火车数量,0
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/081-查找两个字符串a-b中的最长公共子串/src/data.txt:
--------------------------------------------------------------------------------
1 | abcdefghijklmnop
2 | abcsafjklmnopqrstuvw
3 | msatgfqpleswalkvowbcjllbmtxdjqtxlxoyrobrnpuctrcowegmyjjmgkzibmbplpslbsfawrqmzeckiwctwizhpkthvqaukxmzhyqbhhjbihzoidheibsrfbzaruhlwoiwlexwoaicikadrhcvevcnwxwsskooedipgftdfcmdpdonvjtzsncuylrbfzstplfsnebivzdyhhbajfokqvscrzobdzgnfkeqfhzpugbekegaiidhervdsgc
4 | kicndbvtazczllcipodvlrliqargjayiivkuymrusywvotxycdzscogyejpvfmrldueulwijytocrf
5 | ujlzfqqscymxyooumhfwuokwvjnkboqwbsjktburxsazwrjltmmnuxsigpvsusgpztxodwfhagyzxpocvmladimtzfwwgkbarhmjthuubccwzvkgadrnpcr
6 | qmuwdtbmltlciaxogzjjktzyegefnkezoouvhbxxtnnctihybsnchumrxysynyhciezgbwjzljuhpgiiuwouyevymbhwsopcyhyhswhmdpdqajvpgitqxczkfegrqhgxlvykbhymnjjpgufdxccjacnfzxmejzrkywwazfiyuwmfbifhllebzojlqlqgpamzwawpgjaatgnrfpmlmgvsnlhufmvzrjwhmdwhxxiksqbwqgkakivvahjntcswdyllwjtwdyspae
--------------------------------------------------------------------------------
/016-坐标移动/src/readme.txt:
--------------------------------------------------------------------------------
1 | 坐标移动
2 | 参与人数:7时间限制:1秒空间限制:32768K
3 | 通过比例:23.53%
4 | 最佳记录:27 ms|465K (来自 田七西西)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,
9 | 从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。
10 | 输入: 合法坐标为A(或者D或者W或者S) + 数字(两位以内) 坐标之间以;分隔。
11 | 非法坐标点需要进行丢弃。如AA10; A1A; $%$; YAD; 等。 下面是一个简单的例子
12 | 如: A10;S20;W10;D30;X;A1A;B10A11;;A10; 处理过程:
13 | 起点(0,0) + A10 = (-10,0) + S20
14 | = (-10,-20) + W10 = (-10,-10) + D30
15 | = (20,-10) + x = 无效 + A1A
16 | = 无效 + B10A11 = 无效 + 一个空 不影响 + A10
17 | = (10,-10) 结果 (10, -10)
18 | 输入描述:
19 |
20 | 一行字符串
21 |
22 |
23 | 输出描述:
24 |
25 | 最终坐标,以,分隔
26 |
27 | 输入例子:
28 |
29 | A10;S20;W10;D30;X;A1A;B10A11;;A10;
30 |
31 | 输出例子:
32 |
33 | 10,-10
--------------------------------------------------------------------------------
/011-数字颠倒/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015/12/21 17:15
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 |
12 | while (scanner.hasNext()) {
13 | int num = scanner.nextInt();
14 | System.out.println(reverseNumber(num));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | private static String reverseNumber(int num) {
21 | StringBuilder builder = new StringBuilder();
22 |
23 | do {
24 | builder.append(num % 10);
25 | num /= 10;
26 | } while (num != 0);
27 |
28 |
29 | return builder.toString();
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/094-多线程/src/readme.md:
--------------------------------------------------------------------------------
1 | #题目描述
2 | 问题描述:有4个线程和1个公共的字符数组。线程1的功能就是向数组输出A,线程2的功能就是向字符输出B,线程3的功能就是向数组输出C,线程4的功能就是向数组输出D。要求按顺序向数组赋值ABCDABCDABCD,ABCD的个数由线程函数1的参数指定。[注:C语言选手可使用WINDOWS SDK库函数]
3 | 接口说明:
4 | void init(); //初始化函数
5 | void Release(); //资源释放函数
6 | unsignedint__stdcall ThreadFun1(PVOID pM) ; //线程函数1,传入一个int类型的指针[取值范围:1 – 250,测试用例保证],用于初始化输出A次数,资源需要线程释放
7 | unsignedint__stdcall ThreadFun2(PVOID pM) ;//线程函数2,无参数传入
8 | unsignedint__stdcall ThreadFun3(PVOID pM) ;//线程函数3,无参数传入
9 | Unsigned int __stdcall ThreadFunc4(PVOID pM);//线程函数4,无参数传入
10 | char g_write[1032]; //线程1,2,3,4按顺序向该数组赋值。不用考虑数组是否越界,测试用例保证
11 |
12 | ##输入描述:
13 | 输入一个int整数
14 |
15 | ##输出描述:
16 | 输出多个ABCD
17 |
18 | ##输入例子:
19 | 10
20 |
21 | ##输出例子:
22 | ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD
--------------------------------------------------------------------------------
/020-简单密码破解/src/readme.txt:
--------------------------------------------------------------------------------
1 | 简单密码破解
2 | 参与人数:5时间限制:1秒空间限制:32768K
3 | 通过比例:88.89%
4 | 最佳记录:0 ms|8552K (来自 i_square)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈.
9 | 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。
10 | 假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个
11 | 密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且
12 | 可以明目张胆地放在显眼的地方而不被别人知道真正的密码。 他是这么变换的,大
13 | 家都知道手机上的字母:
14 | 1--1,
15 | abc--2,
16 | def--3, ghi--4,
17 | jkl--5, mno--6,
18 | pqrs--7, tuv--8
19 | wxyz--9,
20 | 0--0,就这么简单,
21 | 渊子把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换,
22 | 声明:密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,如:X,
23 | 先变成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。
24 | 输入描述:
25 |
26 | 输入包括多个测试数据。输入是一个明文,密码长度不超过100个字符,输入直到文件结尾
27 |
28 |
29 | 输出描述:
30 |
31 | 输出渊子真正的密文
32 |
33 | 输入例子:
34 |
35 | YUANzhi1987
36 |
37 | 输出例子:
38 |
39 | zvbo9441987
--------------------------------------------------------------------------------
/106-Sudoku-Java/src/readme.md:
--------------------------------------------------------------------------------
1 | #题目描述
2 | 问题描述:数独(Sudoku)是一款大众喜爱的数字逻辑游戏。玩家需要根据9X9盘面上的已知数字,推算出所有剩余空格的数字,并且满足每一行、每一列、每一个粗线宫内的数字均含1-9,并且不重复。
3 | 输入:
4 | 包含已知数字的9X9盘面数组[空缺位以数字0表示]
5 | 输出:
6 | 完整的9X9盘面数组
7 |
8 | ##输入描述:
9 | 包含已知数字的9X9盘面数组[空缺位以数字0表示]
10 |
11 | ##输出描述:
12 | 完整的9X9盘面数组
13 |
14 | ##输入例子:
15 | 0 9 2 4 8 1 7 6 3
16 | 4 1 3 7 6 2 9 8 5
17 | 8 6 7 3 5 9 4 1 2
18 | 6 2 4 1 9 5 3 7 8
19 | 7 5 9 8 4 3 1 2 6
20 | 1 3 8 6 2 7 5 9 4
21 | 2 7 1 5 3 8 6 4 9
22 | 3 8 6 9 1 4 2 5 7
23 | 0 4 5 2 7 6 8 3 1
24 |
25 | ##输出例子:
26 | 5 9 2 4 8 1 7 6 3
27 | 4 1 3 7 6 2 9 8 5
28 | 8 6 7 3 5 9 4 1 2
29 | 6 2 4 1 9 5 3 7 8
30 | 7 5 9 8 4 3 1 2 6
31 | 1 3 8 6 2 7 5 9 4
32 | 2 7 1 5 3 8 6 4 9
33 | 3 8 6 9 1 4 2 5 7
34 | 9 4 5 2 7 6 8 3 1
--------------------------------------------------------------------------------
/012-字符串反转/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015/12/21 17:20
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 |
12 | while (scanner.hasNext()) {
13 | String input = scanner.nextLine();
14 |
15 | System.out.println(stringReverse(input));
16 | }
17 | scanner.close();
18 | }
19 |
20 | private static String stringReverse(String input) {
21 | StringBuilder builder = new StringBuilder(input.length());
22 |
23 | for (int i = input.length() - 1; i >= 0; i--) {
24 | builder.append(input.charAt(i));
25 | }
26 |
27 | return builder.toString();
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/041-求int型数据在内存中存储时1的个数/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-24 20:20
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | int n = scanner.nextInt();
14 | System.out.println(count(n));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | private static int count(int n) {
21 | int result = 0;
22 | while (n != 0) {
23 | result += n & 1;
24 | n >>>= 1;
25 | }
26 |
27 | return result;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/061-等差数列/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-25 16:59
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | String input = scanner.nextLine();
14 | try {
15 | System.out.println(sum(Integer.parseInt(input)));
16 | } catch (Exception e) {
17 | System.out.println("-1");
18 | }
19 | }
20 |
21 | scanner.close();
22 | }
23 |
24 | private static int sum(int n) {
25 | return (3 * n + 1) * n / 2;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/103-扑克牌大小/src/readme.md:
--------------------------------------------------------------------------------
1 | #题目描述
2 |
3 | 扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A、2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):
4 | 3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER
5 | 输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-"两边没有空格,如:4 4 4 4-joker JOKER。
6 | 请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR。
7 | 基本规则:
8 | (1)输入每手牌可能是个子、对子、顺子(连续5张)、三个、炸弹(四个)和对王中的一种,不存在其他情况,由输入保证两手牌都是合法的,顺子已经从小到大排列;
9 | (2)除了炸弹和对王可以和所有牌比较之外,其他类型的牌只能跟相同类型的存在比较关系(如,对子跟对子比较,三个跟三个比较),不考虑拆牌情况(如:将对子拆分成个子);
10 | (3)大小规则跟大家平时了解的常见规则相同,个子、对子、三个比较牌面大小;顺子比较最小牌大小;炸弹大于前面所有的牌,炸弹之间比较牌面大小;对王是最大的牌;
11 | (4)输入的两手牌不会出现相等的情况。
12 |
13 | #输入描述:
14 | 输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-"两边没有空格,如 4 4 4 4-joker JOKER。
15 |
16 | #输出描述:
17 | 输出两手牌中较大的那手,不含连接符,扑克牌顺序不变,仍以空格隔开;如果不存在比较关系则输出ERROR。
18 |
19 | #输入例子:
20 | 4 4 4 4-joker JOKER
21 |
22 | #输出例子:
23 | joker JOKER
--------------------------------------------------------------------------------
/036-iNOC产品部-杨辉三角的变形/src/readme.txt:
--------------------------------------------------------------------------------
1 | iNOC产品部-杨辉三角的变形
2 | 参与人数:2时间限制:1秒空间限制:32768K
3 | 通过比例:100.00%
4 | 最佳记录:0 ms|8460K (来自 i_square)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 1
9 | 1 1 1
10 | 1 2 3 2 1
11 | 1 3 6 7 6 3 1
12 | 1 4 10 16 19 16 10 4 1
13 |
14 | 以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数,左上角数到右上角的数,3个数之和
15 | (如果不存在某个数,认为该数就是0)。 求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,
16 | 输入4则输出3。 输入n(n <= 1000000000)<> public static int run(int x) { return -1; }
17 | <= 1000000000)<><= 1000000000)<><= 1000000000)<><= 1000000000)<> <= 1000000000)<><= 1000000000)<>
18 | <= 1000000000)<> <= 1000000000)<> <= 1000000000)<><= 1000000000)<> <= 1000000000)<> <= 1000000000)<>
19 | <= 1000000000)<> <= 1000000000)<> <= 1000000000)<>
20 | 输入描述:
21 |
22 | 输入一个int整数
23 |
24 |
25 | 输出描述:
26 |
27 | 输出返回的int值
28 |
29 | 输入例子:
30 |
31 | 4
32 |
33 | 输出例子:
34 |
35 | 3
--------------------------------------------------------------------------------
/065-字符逆序/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-27 16:36
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | String input = scanner.nextLine();
14 | System.out.println(reverse(input));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | private static String reverse(String s) {
21 | char[] c = new char[s.length()];
22 |
23 | for (int i = s.length() - 1, j = 0; i >= 0; i--, j++) {
24 | c[j] = s.charAt(i);
25 | }
26 | return new String (c);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/026-字符串加密/src/readme.txt:
--------------------------------------------------------------------------------
1 | 字符串加密
2 | 参与人数:1时间限制:1秒空间限制:32768K
3 | 通过比例:100.00%
4 | 最佳记录:28 ms|402K (来自 江风)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 有一种技巧可以对数据进行加密,它使用一个单词作为它的密匙。下面是它的工作原理:
9 | 首先,选择一个单词作为密匙,如TRAILBLAZERS。如果单词中包含有重复的字母,只保留第1个,
10 |
11 | 其余几个丢弃。现在,修改过的那个单词死于字母表的下面,如下所示:
12 | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
13 | T R A I L B Z E S
14 | T R A I L B Z E S C D F G H J K M N O P Q U V W X Y
15 | 上面其他用字母表中剩余的字母填充完整。在对信息进行加密时,信息中的每个字母被固定于顶上那行,
16 | 并用下面那行的对应字母一一取代原文的字母(字母字符的大小写状态应该保留)。
17 | 因此,使用这个密匙,Attack AT DAWN(黎明时攻击)就会被加密为Tpptad TP ITVH。
18 | 请实现下述接口,通过指定的密匙和明文得到密文。
19 | 详细描述:
20 | 接口说明 原型: voidencrypt(char * key,char * data,char * encrypt);
21 | 输入参数: char * key:密匙 char * data:明文 输出参数:
22 | char * encrypt:密文
23 | 返回值: void
24 | 输入描述:
25 |
26 | 先输入key和要加密的字符串
27 |
28 |
29 | 输出描述:
30 |
31 | 返回加密后的字符串
32 |
33 | 输入例子:
34 |
35 | nihao ni
36 |
37 | 输出例子:
38 |
39 | le
--------------------------------------------------------------------------------
/064-记负均正II/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-27 16:30
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | //Scanner scanner = new Scanner(System.in);
11 | Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 |
13 | // 记数负数的个数
14 | int m = 0;
15 |
16 | int n = 0;
17 | double avg = 0;
18 |
19 | while (scanner.hasNext()) {
20 | int i = scanner.nextInt();
21 |
22 | if (i < 0) {
23 | m++;
24 | } else if (i > 0) {
25 | avg += i;
26 | n++;
27 | }
28 | }
29 | scanner.close();
30 |
31 | System.out.printf("%d\n%g", m, (n == 0 ? 0 : avg / n));
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/056-统计大写字母个数/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-25 15:16
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | String input = scanner.nextLine();
14 | System.out.println(count(input));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | private static int count(String s) {
21 | int result = 0;
22 |
23 | for (int i = 0; i < s.length(); i++) {
24 | char c = s.charAt(i);
25 | if (c >= 'A' && c <= 'Z') {
26 | result++;
27 | }
28 | }
29 |
30 | return result;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/070-记票统计/src/readme.txt:
--------------------------------------------------------------------------------
1 | 记票统计
2 |
3 | 题目描述
4 | 请实现接口:
5 | unsigned int AddCandidate (char* pCandidateName);
6 | 功能:设置候选人姓名
7 | 输入: char* pCandidateName 候选人姓名
8 | 输出:无
9 | 返回:输入值非法返回0,已经添加过返回0 ,添加成功返回1
10 |
11 | Void Vote(char* pCandidateName);
12 | 功能:投票
13 | 输入: char* pCandidateName 候选人姓名
14 | 输出:无
15 | 返回:无
16 |
17 | unsigned int GetVoteResult (char* pCandidateName);
18 | 功能:获取候选人的票数。如果传入为空指针,返回无效的票数,同时说明本次投票活动结束,释放资源
19 | 输入: char* pCandidateName 候选人姓名。当输入一个空指针时,返回无效的票数
20 | 输出:无
21 | 返回:该候选人获取的票数
22 |
23 | void Clear()
24 | // 功能:清除投票结果,释放所有资源
25 | // 输入:
26 | // 输出:无
27 | // 返回
28 |
29 |
30 | 输入描述:
31 | 输入候选人的人数,第二行输入候选人的名字,第三行输入投票人的人数,第四行输入投票。
32 |
33 | 输出描述:
34 | 每行输出候选人的名字和得票数量。
35 |
36 | 输入例子:
37 | 4
38 | A B C D
39 | 8
40 | A B C D E F G H
41 |
42 | 输出例子:
43 | A : 1
44 | B : 1
45 | C : 1
46 | D : 1
47 | Invalid : 4
--------------------------------------------------------------------------------
/014-字串的连接最长路径查找/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.io.File;
2 | import java.io.FileNotFoundException;
3 | import java.util.*;
4 |
5 | /**
6 | * Author: 王俊超
7 | * Date: 2015/12/22 13:59
8 | * All Rights Reserved !!!
9 | */
10 | public class Main {
11 | public static void main(String[] args) throws FileNotFoundException {
12 | Scanner scanner = new Scanner(System.in);
13 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
14 |
15 | while (scanner.hasNext()) {
16 | int num = Integer.parseInt(scanner.nextLine());
17 | List list = new ArrayList<>(num);
18 |
19 | while ((--num) >= 0) {
20 | list.add(scanner.nextLine());
21 | }
22 |
23 | Collections.sort(list);
24 |
25 | for (String s : list) {
26 | System.out.println(s);
27 | }
28 | }
29 |
30 | scanner.close();
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/050-整形数组合并/src/data.txt:
--------------------------------------------------------------------------------
1 | 3 1 2 5 4 -1 0 3 2
2 | 10
3 | 0 1 2 3 4 5 6 7 8 9
4 | 10
5 | 0 1 2 3 4 5 6 7 8 19
6 | 50
7 | 525 1435 1695 3861 4847 9516 11430 14061 18581 22685 22917 23641 23710 24003 27200 29507 31105 31299 34210 38135 40454 41064 41091 41285 41379 45057 45783 46608 47373 50704 52197 52676 53894 55374 55911 57964 58542 58655 59060 72172 73406 75870 76763 79143 79539 79999 80864 84319 85218 86802
8 | 102
9 | 1804 1917 2420 5513 5933 6463 6829 7730 7801 9195 9506 9955 11622 12067 12176 12843 14410 15504 15966 16018 16100 16599 19251 20049 21011 21201 23431 25796 26130 27151 27348 28150 31037 33740 33940 34645 34972 36147 37654 39810 40143 40160 40216 41889 43786 43990 46155 46330 46855 46920 47666 47760 48605 48795 50334 51288 52746 55091 56183 58489 58597 61665 61985 62427 63403 63558 63743 64234 65942 66801 68427 68609 68738 70588 71408 74111 74818 75298 77316 78586 79375 80636 81664 81763 82292 82603 84089 84114 84766 85417 85710 86434 86552 90294 92295 93248 93352 93548 93561 94862 95721 95783
--------------------------------------------------------------------------------
/085-记负均正/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2016-01-04 10:00
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | int n = scanner.nextInt();
14 | int ne = 0;
15 | double sum = 0;
16 | int nne = 0;
17 |
18 | while ((--n) >= 0) {
19 | int t = scanner.nextInt();
20 | if (t < 0) {
21 | ne++;
22 | } else if (t > 0) {
23 | sum += t;
24 | nne++;
25 | }
26 | }
27 |
28 | System.out.printf("%d %.1f\n", ne, sum / nne);
29 | }
30 |
31 | scanner.close();
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/003-明明的随机数/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 | import java.util.Set;
3 | import java.util.TreeSet;
4 |
5 | /**
6 | * Author: 王俊超
7 | * Date: 2015-12-22 19:10
8 | * Declaration: All Rights Reserved !!!
9 | */
10 | public class Main {
11 | public static void main(String[] args) {
12 | Scanner scanner = new Scanner(System.in);
13 | while (scanner.hasNext()) {
14 | // 读取输入的数字数
15 | int num = scanner.nextInt();
16 | // 存放输入的数字
17 | Set set = new TreeSet<>();
18 | while ((--num) >= 0) {
19 | set.add(scanner.nextInt());
20 | }
21 |
22 | System.out.print(setToString(set));
23 | }
24 | }
25 |
26 | private static String setToString(Set set) {
27 | StringBuilder builder = new StringBuilder(128);
28 | for (Integer i : set) {
29 | builder.append(i).append("\n");
30 | }
31 |
32 | return builder.toString();
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/031-求小球落地5次后所经历的路程和第5次反弹的高度/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-24 14:13
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | double h = scanner.nextDouble();
14 | System.out.printf("%g\n", getJourney(h));
15 | System.out.printf("%g\n", getTenthHigh(h));
16 | }
17 |
18 | scanner.close();
19 | }
20 |
21 | private static double getTenthHigh(double h) {
22 | return h / 32;
23 | }
24 |
25 | private static double getJourney(double h) {
26 |
27 | double up = (Math.pow(0.5, 4) - 1) / (0.5 - 1);
28 | double down = (Math.pow(0.5, 5) - 1) / (0.5 - 1);
29 |
30 | return h * 0.5 * up + h * down;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/067-求最小公倍数/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-28 13:51
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | int m = scanner.nextInt();
14 | int n = scanner.nextInt();
15 |
16 | System.out.println(m / gcd(m, n) * n);
17 | }
18 |
19 | scanner.close();
20 | }
21 |
22 | private static int gcd(int max, int min) {
23 | int tmp;
24 | if (max < min) {
25 | tmp = max;
26 | max = min;
27 | min = tmp;
28 | }
29 |
30 | while (max % min != 0) {
31 | tmp = min;
32 | min = max % min;
33 | max = tmp;
34 | }
35 |
36 | return min;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/001-字符串最后一个单词的长度/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-18 10:40
6 | * Declaration: All Rigths Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 |
12 | // 是否还有其它的行,一次可以测试多行
13 | while (scanner.hasNext()) {
14 | String input = scanner.nextLine();
15 | System.out.println(findLastWordLength(input));
16 | }
17 |
18 | scanner.close();
19 | }
20 |
21 | public static int findLastWordLength(String input) {
22 | // 最后一个字母的位置
23 | int last = input.length() - 1;
24 |
25 | // 找最后一个字母出现的位置
26 | while (last >= 0 && input.charAt(last) == ' '){
27 | last--;
28 | }
29 |
30 | // 找最后一个字母之前的第一个空白字符
31 | int pos = last - 1;
32 | while (pos >= 0 && input.charAt(pos) != ' '){
33 | pos--;
34 | }
35 |
36 | return last - pos;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/102-二维数组操作/src/readme.md:
--------------------------------------------------------------------------------
1 | #题目描述
2 |
3 | 有一个数据表格为二维数组(数组元素为int类型),行长度为ROW_LENGTH,列长度为COLUMN_LENGTH。对该表格中数据的操作可以在单个单元内,也可以对一个整行或整列进行操作,操作包括交换两个单元中的数据;插入某些行或列。
4 | 请编写程序,实现对表格的各种操作,并跟踪表格中数据在进行各种操作时,初始数据在表格中位置的变化轨迹。
5 |
6 | 详细要求:
7 |
8 | 1.数据表规格的表示方式为“行*列”, 数据表元素的位置表示方式为[行,列],行列均从0开始编号
9 | 2.数据表的最大规格为9行*9列,对表格进行操作时遇到超出规格应该返回错误
10 | 3.插入操作时,对m*n表格,插入行号只允许0~m,插入列号只允许0~n。超出范围应该返回错误
11 | 4.只需记录初始表格中数据的变化轨迹,查询超出初始表格的数据应返回错误
12 | 例如: 初始表格为4*4,可查询的元素范围为[0,0]~[3,3],假设插入了第2行,数组变为5*4,查询元素[4,0]时应该返回错误
13 | 5.查询数据要求返回一个链表,链表中节点的顺序即为该查询的数据在表格中的位置变化顺序(需包含初始位置)
14 |
15 |
16 | #输入描述:
17 | 输入数据按下列顺序输入:
18 | 1 表格的行列值
19 | 2 要交换的两个单元格的行列值
20 | 3 输入要插入的行的数值
21 | 4 输入要插入的列的数值
22 | 5 输入要获取运动轨迹的单元格的值
23 |
24 |
25 | #输出描述:
26 | 输出按下列顺序输出:
27 | 1 初始化表格是否成功,若成功则返回0, 否则返回-1
28 | 2 输出交换单元格是否成功
29 | 3 输出插入行是否成功
30 | 4 输出插入列是否成功
31 | 5 输出要查询的运动轨迹的单元查询是否成功
32 |
33 | #输入例子:
34 | 3 4
35 | 1 1
36 | 0 1
37 | 2
38 | 1
39 | 2 2
40 |
41 | #输出例子:
42 | 0
43 | 0
44 | 0
45 | 0
46 | 0
--------------------------------------------------------------------------------
/005-进制转换/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-22 19:13
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | while (scanner.hasNext()) {
12 | String input = scanner.nextLine();
13 | System.out.println(hexToDec(input));
14 | }
15 | scanner.close();
16 | }
17 |
18 | private static int hexToDec(String hex) {
19 | final int BASE = 16;
20 | int result = 0;
21 |
22 | for (int i = 2; i < hex.length(); i++) {
23 | result = result * BASE + hexToNum(hex.charAt(i));
24 | }
25 | return result;
26 | }
27 |
28 | private static int hexToNum(char ch) {
29 |
30 | if (ch >= '0' && ch <= '9') {
31 | return ch - '0';
32 | } else if (ch >= 'a' && ch <= 'z') {
33 | return ch - 'a' + 10;
34 | } else {
35 | return ch - 'A' + 10;
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/037-无线OSS高精度整数加法/src/readme.txt:
--------------------------------------------------------------------------------
1 | 无线OSS-高精度整数加法
2 | 参与人数:2时间限制:1秒空间限制:32768K
3 | 通过比例:100.00%
4 | 最佳记录:0 ms|8552K (来自 i_square)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 在计算机中,由于处理器位宽限制,只能处理有限精度的十进制整数加减法,比如在32位宽处理器计算机中, 参与运算的操作数和结果
9 | 必须在-2^31~2^(31-1)之间。如果需要进行更大范围的十进制整数加法,需要使用特殊 的方式实现,比如使用字符串保存操作数和结果,
10 | 采取逐位运算的方式。如下: 9876543210 + 1234567890 = ? 让字符串 num1="9876543210",字符串 num2="1234567890",
11 | 结果保存在字符串 result = "11111111100"。 -9876543210 + (-1234567890) = ? 让字符串 num1="-9876543210",字
12 | 符串 num2="-1234567890",结果保存在字符串 result = "-11111111100"。 要求编程实现上述高精度的十进制加法。
13 | 要求实现方法: public String add (String num1, String num2) 【输入】num1:字符串形式操作数1,如果操作数为负,
14 | 则num1的前缀为符号位'-' num2:字符串形式操作数2,如果操作数为负,则num2的前缀为符号位'-'
15 | 【返回】保存加法计算结果字符串,如果结果为负,则字符串的前缀为'-' 注: (1)当输入为正数时,'+'不会出现在输入字符串中;
16 | 当输入为负数时,'-'会出现在输入字符串中,且一定在输入字符串最左边位置; (2)输入字符串所有位均代表有效数字,即不存
17 | 在由'0'开始的输入字符串,比如"0012", "-0012"不会出现; (3)要求输出字符串所有位均为有效数字,结果为正或0时'+'不
18 | 出现在输出字符串,结果为负时输出字符串最左边位置为'-'。
19 | 输入描述:
20 |
21 | 输入两个字符串
22 |
23 |
24 | 输出描述:
25 |
26 | 输出给求和后的结果
27 |
28 | 输入例子:
29 |
30 | 9876543210 1234567890
31 |
32 | 输出例子:
33 |
34 | 11111111100
--------------------------------------------------------------------------------
/010-字符个数统计/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015/12/21 17:06
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | while (scanner.hasNext()) {
12 | int[] arr = new int[128];
13 | String input = scanner.nextLine();
14 | countChar(arr, input);
15 | System.out.println(countCharNum(arr));
16 | }
17 |
18 | scanner.close();
19 | }
20 |
21 | private static void countChar(int[] arr, String input) {
22 | for (int i = 0; i < input.length(); i++) {
23 | char c = input.charAt(i);
24 | if (c <= 127) {
25 | arr[c]++;
26 | }
27 | }
28 | }
29 |
30 | private static int countCharNum(int[] arr) {
31 | int result = 0;
32 | for (int i : arr) {
33 | if (i != 0) {
34 | result++;
35 | }
36 | }
37 |
38 | return result;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/039-iNOC产品部--完全数计算/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-24 19:58
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | int n = scanner.nextInt();
14 | System.out.println(count(n));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | private static int count(int n) {
21 |
22 | int result = 0;
23 |
24 | for (int i = 2; i < n; i++) {
25 | int sum = 1;
26 | int sqrt = i / 2;
27 | for (int j = 2; j <= sqrt; j++) {
28 | if (i % j == 0) {
29 | sum += j;
30 | }
31 | }
32 |
33 | if (sum == i) {
34 | result++;
35 | }
36 | }
37 |
38 | return result;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/083-计算字符串的相似度/src/readme.txt:
--------------------------------------------------------------------------------
1 | 计算字符串的相似度
2 |
3 | 题目描述
4 | 对于不同的字符串,我们希望能有办法判断相似程度,我们定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法如下:
5 | 1 修改一个字符,如把“a”替换为“b”。
6 | 2 增加一个字符,如把“abdd”变为“aebdd”。
7 | 3 删除一个字符,如把“travelling”变为“traveling”。
8 | 比如,对于“abcdefg”和“abcdef”两个字符串来说,我们认为可以通过增加和减少一个“g”的方式来达到目的。上面的两种方案,都只需要一次操作。把这个操作所需要的次数定义为两个字符串的距离,而相似度等于“距离+1”的倒数。也就是说,“abcdefg”和“abcdef”的距离为1,相似度为1/2=0.5.
9 | 给定任意两个字符串,你是否能写出一个算法来计算出它们的相似度呢?
10 |
11 | 请实现如下接口
12 | /**
13 | * 功能:计算字符串的相似度
14 | * 输入:pucAExpression/ pucBExpression:字符串格式,如: "abcdef"
15 | * 返回:字符串的相似度,相似度等于“距离+1”的倒数,结果请用1/字符串的形式,如1/2
16 | */
17 | public static String stringDistance(String expressionA, String expressionB) {
18 | /* 请实现*/
19 | return null;
20 | }
21 |
22 | 约束:
23 | 1、PucAExpression/ PucBExpression字符串中的有效字符包括26个小写字母。
24 | 2、PucAExpression/ PucBExpression算术表达式的有效性由调用者保证;
25 | 3、超过result范围导致信息无法正确表达的,返回null。
26 |
27 | 输入描述:
28 | 输入两个字符串
29 |
30 | 输出描述:
31 | 输出相似度,string类型
32 |
33 | 输入例子:
34 | abcdef
35 | abcdefg
36 |
37 | 输出例子:
38 | 1/2
--------------------------------------------------------------------------------
/084-求最大连续bit数/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2016-01-04 09:44
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | int b = scanner.nextInt();
14 | System.out.println(countBit(b));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | private static int countBit(int b) {
21 | int max = 0;
22 | int cur = 0;
23 | b &= 0xFF;
24 | for (int i = 0, and = 1; i < 8; i++) {
25 | // 如果第i位为1
26 | if ((b & and) != 0) {
27 | cur++;
28 | if (cur > max) {
29 | max = cur;
30 | }
31 | } else {
32 | cur = 0;
33 | }
34 |
35 | and <<= 1;
36 | }
37 |
38 | return max;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/006-质数因子/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.ArrayList;
2 | import java.util.LinkedList;
3 | import java.util.List;
4 | import java.util.Scanner;
5 |
6 | /**
7 | * Author: 王俊超
8 | * Date: 2015/12/21 15:34
9 | * All Rights Reserved !!!
10 | */
11 | public class Main {
12 | public static void main(String[] args) {
13 | Scanner scanner = new Scanner(System.in);
14 |
15 | while (scanner.hasNext()) {
16 | long input = scanner.nextLong();
17 | System.out.println(findPrimes(input));
18 | }
19 | scanner.close();
20 | }
21 |
22 |
23 | private static String findPrimes(long num) {
24 |
25 | StringBuilder builder = new StringBuilder(128);
26 | long i = 2;
27 | while (i <= num) {
28 | // 每次的i一定是质数时才会满足
29 | // 因为如果是一个合数,那那它一定是由更小的质数相乘得来的,
30 | // 而在i前的质数已经全部被使用过了,不能再整除num了
31 | while (num % i == 0) {
32 | builder.append(i).append(' ');
33 | num /= i;
34 | }
35 | i++;
36 | }
37 |
38 | return builder.toString();
39 | }
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/055-字符串匹配/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Arrays;
2 | import java.util.HashSet;
3 | import java.util.Scanner;
4 | import java.util.Set;
5 |
6 | /**
7 | * Author: 王俊超
8 | * Date: 2015-12-25 13:53
9 | * All Rights Reserved !!!
10 | */
11 | public class Main {
12 | public static void main(String[] args) {
13 | // Scanner scanner = new Scanner(System.in);
14 | Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
15 | while (scanner.hasNext()) {
16 | String sub = scanner.next();
17 | String s = scanner.next();
18 | System.out.println(contains(s, sub));
19 | }
20 |
21 | scanner.close();
22 | }
23 |
24 |
25 | private static boolean contains(String s, String sub) {
26 | Set set = new HashSet<>();
27 | for (int i = 0; i < s.length(); i++) {
28 | set.add(s.charAt(i));
29 | }
30 |
31 | for (int i = 0; i < sub.length(); i++) {
32 | if (!set.contains(sub.charAt(i))) {
33 | return false;
34 | }
35 | }
36 |
37 | return true;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/009-提取不重复的整数/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.HashMap;
2 | import java.util.HashSet;
3 | import java.util.LinkedHashSet;
4 | import java.util.Scanner;
5 |
6 | /**
7 | * Author: 王俊超
8 | * Date: 2015/12/21 16:56
9 | * All Rights Reserved !!!
10 | */
11 | public class Main {
12 | public static void main(String[] args) {
13 | Scanner scanner = new Scanner(System.in);
14 |
15 | while (scanner.hasNext()) {
16 | int input = scanner.nextInt();
17 | System.out.println(extractNumber(input + ""));
18 | }
19 |
20 | scanner.close();
21 | }
22 |
23 | private static String extractNumber(String numStr) {
24 | StringBuilder builder = new StringBuilder();
25 |
26 | HashSet set = new LinkedHashSet<>();
27 | for (int i = numStr.length() - 1; i >= 0; i--) {
28 | set.add(numStr.charAt(i));
29 | }
30 |
31 | for (Character c : set) {
32 | builder.append(c);
33 | }
34 |
35 | // 如果第一个字符是0
36 | if (builder.charAt(0) == '0') {
37 | return builder.substring(1, builder.length());
38 | }
39 |
40 | return builder.toString();
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/032-输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数/src/readme.txt:
--------------------------------------------------------------------------------
1 | 输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数
2 | 参与人数:6时间限制:1秒空间限制:32768K
3 | 通过比例:16.67%
4 | 最佳记录:0 ms|8552K (来自 _DdEar)
5 | 算法知识视频讲解
6 | 题目描述
7 |
8 | 输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数。
9 | /** * 统计出英文字母字符的个数。 * * @param str 需要输入的字符串
10 | * @return 英文字母的个数 */ public static int getEnglishCharCount(String str)
11 | { return 0; } /** * 统计出空格字符的个数。 * *
12 | @param str 需要输入的字符串 * @return 空格的个数 */
13 | public static int getBlankCharCount(String str) { return 0; }
14 | /** * 统计出数字字符的个数。 * * @param str 需要输入的字符串
15 | * @return 英文字母的个数 */ public static int getNumberCharCount(String str)
16 | { return 0; } /** * 统计出其它字符的个数。 * *
17 | @param str 需要输入的字符串 * @return 英文字母的个数 */
18 | public static int getOtherCharCount(String str) { return 0; }
19 | 输入描述:
20 |
21 | 输入一行字符串,可以有空格
22 |
23 |
24 | 输出描述:
25 |
26 | 统计其中英文字符,空格字符,数字字符,其他字符的个数
27 |
28 | 输入例子:
29 |
30 | 1qazxsw23 edcvfr45tgbn hy67uj m,ki89ol.\\\/;p0-=\\\\][
31 |
32 | 输出例子:
33 |
34 | 26 3 10 12
--------------------------------------------------------------------------------
/045-计算日期到天数转换/src/readme.txt:
--------------------------------------------------------------------------------
1 | 计算日期到天数转换
2 |
3 | 题目描述
4 | 根据输入的日期,计算是这一年的第几天。。
5 | 详细描述:
6 | 输入某年某月某日,判断这一天是这一年的第几天?。
7 |
8 |
9 | 接口设计及说明:
10 | /*****************************************************************************
11 | Description : 数据转换
12 | Input Param : year 输入年份
13 | Month 输入月份
14 | Day 输入天
15 |
16 | Output Param :
17 | Return Value : 成功返回0,失败返回-1(如:数据错误)
18 | *****************************************************************************/
19 | public static int iConverDateToDay(int year, int month, int day) {
20 | /* 在这里实现功能,将结果填入输入数组中*/
21 | return 0;
22 | }
23 |
24 | /*****************************************************************************
25 | Description :
26 | Input Param :
27 |
28 | Output Param :
29 | Return Value : 成功:返回outDay输出计算后的第几天;失败:返回-1
30 | *****************************************************************************/
31 | public static int getOutDay() {
32 | return 0;
33 | }
34 |
35 | 输入描述:
36 | 输入三行,分别是年,月,日
37 |
38 | 输出描述:
39 | 成功:返回outDay输出计算后的第几天; 失败:返回-1
40 |
41 | 输入例子:
42 | 2012
43 | 12
44 | 31
45 | 输出例子:
46 | 366
--------------------------------------------------------------------------------
/069-简单错误记录/src/data.txt:
--------------------------------------------------------------------------------
1 | C:\gtu\vcy\jk\zwthkipl 636 G:\rsle\lsax\yalcxu\vwhysms 637 F:\fzqz 640 E:\lswb\styce\thjnbxdvg 645 F:\up\qflvvayylipvj 635 C:\pivw\rkd 644 E:\tlkbjb\pcvnvm\qh\fzqz 633 E:\ezke\xvrdkuesnjerakzhs 641 E:\qflvvayylipvj 639 F:\ybpxk 644 G:\rfdr\faxpyhyznsssbo 630 E:\xktax\osekgaqy 646 C:\te 633 G:\albed\ffc\jclzfq\h 631 F:\zsshil\pkue\mazocurlwufmkkrw 635 E:\dmj\uefo\syabgm\qflvvayylipvj 643 F:\pgdiwvceluyzft 634 D:\xiqck\dta\lnh 639 E:\nu\nz\wwjpch\fzqz 650 E:\gfsahypjzwfglvou 644 G:\qh\thjnbxdvg 641 C:\cp\voause\mf\hebgpyzpyyybiywpv 632 E:\de\vet\vdooytekbghohqz 631 E:\cox\pvg\tlrlr 640 G:\hkc\fllkwmwlgiqahxbfs 638 E:\apjnogffvkwnv 637 E:\nldefh\ar\oqsb\uyobrilaabapini 630 F:\wgotle\ar\wgh\hebgpyzpyyybiywpv 639 G:\nrekjavm 634 C:\mvngfg\lfjnvz\xvrdkuesnjerakzhs 634 F:\exne\vh\kqh\fzqz 641 F:\lepvz 642 G:\qg\hcbh\uknyte\pgdiwvceluyzft 636 F:\ho\cn\uyobrilaabapini 637 E:\xbc\fzqz 642 G:\ju\nmdd\fzqz 643 G:\lzpmdx\rxp\ybpxk 629 D:\fc\lnh 629 D:\dsgvo\zwthkipl 631 G:\pujc\cgorfjzkqmnjathbiip 640 G:\vfhyp\cs\rrt 638 F:\oteh\ti\urajfw\tlrlr 636 C:\crdp\qwptjlorrmnv 642 D:\kcl\fqzs\zlm\pgdiwvceluyzft 640 G:\faxpyhyznsssbo 639 D:\swnhezhgdcwwbmkyqt 637 D:\azo\sry\faxpyhyznsssbo 633 C:\beqt\eh\dm\dlhehjccfdgrrzyj 642 F:\lepvz 635
--------------------------------------------------------------------------------
/040-(练习用)挑7/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-24 20:10
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | // Scanner scanner = new Scanner(System.in);
11 | Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | int n = scanner.nextInt();
14 | System.out.println(countSeven(n));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | private static int countSeven(int n) {
21 | int result = 0;
22 |
23 | for (int i = 7; i <= n; i++) {
24 | if (i % 7 == 0) {
25 | result++;
26 | } else {
27 | // 某个数位上有1
28 | int m = i;
29 | while (m != 0) {
30 | if (m % 10 == 7) {
31 | result++;
32 | break;
33 | } else {
34 | m /= 10;
35 | }
36 | }
37 | }
38 | }
39 |
40 | return result;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/047-百钱买百鸡问题/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-25 08:15
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | //Scanner scanner = new Scanner(System.in);
11 | Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | scanner.nextLine();
14 | System.out.print(getResult());
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | /**
21 | * 鸡翁(x)、鸡母(y)、鸡雏(z)问题是求 100 = 5x + 3y+ z/3 且 100 = x + y + z的所有可能解
22 | *
23 | * @return
24 | */
25 | public static String getResult() {
26 | StringBuilder builder = new StringBuilder();
27 |
28 | for (int x = 0; x <= 100; x++) {
29 | for (int y = 0; y <= 100 - x; y++) {
30 | int z = 100 - x - y;
31 | if (z % 3 == 0 && 100 == 5 * x + 3 * y + z / 3) {
32 | builder.append(x).append(' ').append(y).append(' ').append(z).append('\n');
33 | }
34 | }
35 | }
36 |
37 | return builder.toString();
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/059-201301-JAVA-题目2-3级/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Arrays;
2 | import java.util.Scanner;
3 |
4 | /**
5 | * Author: 王俊超
6 | * Date: 2015-12-25 16:31
7 | * All Rights Reserved !!!
8 | */
9 | public class Main {
10 | public static void main(String[] args) {
11 | Scanner scanner = new Scanner(System.in);
12 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
13 | while (scanner.hasNext()) {
14 | int n = scanner.nextInt();
15 | int m = scanner.nextInt();
16 | System.out.println(count(n, m));
17 | }
18 |
19 | scanner.close();
20 | }
21 |
22 | private static int count(int n, int m) {
23 |
24 | int[][] path = new int[n + 1][m + 1];
25 |
26 | for (int i = 0; i < path[0].length; i++) {
27 | path[0][i] = 1;
28 | }
29 |
30 | for (int i = 0; i < path.length; i++) {
31 | path[i][0] = 1;
32 | }
33 |
34 | for (int i = 1; i < path.length; i++) {
35 | for (int j = 1; j < path[0].length; j++) {
36 | path[i][j] = path[i - 1][j] + path[i][j - 1];
37 | }
38 | }
39 |
40 | return path[n][m];
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/068-购物单/src/readme.txt:
--------------------------------------------------------------------------------
1 | 购物单
2 |
3 | 题目描述
4 | 王强今天很开心,公司发给N元的年终奖。王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,
5 | 附件是从属于某个主件的,下表就是一些主件与附件的例子:
6 | 主件 附件
7 | 电脑 打印机,扫描仪
8 | 书柜 图书
9 | 书桌 台灯,文具
10 | 工作椅 无
11 | 如果要买归类为附件的物品,必须先买该附件所属的主件。每个主件可以有 0 个、 1 个或 2 个附件。附件不
12 | 再有从属于自己的附件。王强想买的东西很多,为了不超出预算,他把每件物品规定了一个重要度,分为 5 等:用整
13 | 数 1 ~ 5 表示,第 5 等最重要。他还从因特网上查到了每件物品的价格(都是 10 元的整数倍)。他希望在不超过
14 | N 元(可以等于 N 元)的前提下,使每件物品的价格与重要度的乘积的总和最大。
15 |
16 | 设第 j 件物品的价格为 v[j] ,重要度为 w[j] ,共选中了 k 件物品,编号依次为 j1 , j2 ,……, jk,
17 | 则所求的总和为:
18 | v[j 1 ]*w[j 1 ]+v[j 2 ]*w[j 2 ]+ … +v[j k ]*w[j k ] 。(其中 * 为乘号)
19 |
20 | 请你帮助王强设计一个满足要求的购物单。
21 |
22 | 输入描述:
23 | 输入的第 1 行,为两个正整数,用一个空格隔开:N m
24 | (其中 N ( <32000 )表示总钱数, m ( <60 )为希望购买物品的个数。)
25 |
26 | 从第 2 行到第 m+1 行,第 j 行给出了编号为 j-1 的物品的基本数据,每行有 3 个非负整数 v p q
27 |
28 | (其中 v 表示该物品的价格( v<10000 ), p 表示该物品的重要度( 1 ~ 5 ), q 表示该物品是
29 | 主件还是附件。如果 q=0 ,表示该物品为主件,如果 q>0 ,表示该物品为附件, q 是所属主件的编号)
30 |
31 | 输出描述:
32 | 输出文件只有一个正整数,为不超过总钱数的物品的价格与重要度乘积的总和的最大值( <200000 )。
33 |
34 | 输入例子:
35 | 1000 5
36 | 800 2 0
37 | 400 5 1
38 | 300 5 1
39 | 400 3 0
40 | 500 2 0
41 |
42 | 输出例子:
43 | 2200
--------------------------------------------------------------------------------
/077-迷宫问题/src/readme.txt:
--------------------------------------------------------------------------------
1 | 迷宫问题
2 |
3 | 题目描述
4 | 定义一个二维数组N*M(其中2<=N<=10;2<=M<=10),如5 × 5数组下所示:
5 | int maze[5][5] = {
6 | 0, 1, 0, 0, 0,
7 | 0, 1, 0, 1, 0,
8 | 0, 0, 0, 0, 0,
9 | 0, 1, 1, 1, 0,
10 | 0, 0, 0, 1, 0,};
11 | 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。入口点为[0,0],既第一空格是可以走的路。
12 |
13 | Input
14 | 一个N × M的二维数组,表示一个迷宫。数据保证有唯一解,不考虑有多解的情况,即迷宫只有一条通道。
15 | Output
16 | 左上角到右下角的最短路径,格式如样例所示。
17 | Sample Input
18 | 0 1 0 0 0
19 | 0 1 0 1 0
20 | 0 0 0 0 0
21 | 0 1 1 1 0
22 | 0 0 0 1 0
23 | Sample Output
24 | (0, 0)
25 | (1, 0)
26 | (2, 0)
27 | (2, 1)
28 | (2, 2)
29 | (2, 3)
30 | (2, 4)
31 | (3, 4)
32 | (4, 4)
33 |
34 | 输入描述:
35 | 输入两个整数,分别表示二位数组的行数,列数。再输入相应的数组,其中的1表示墙壁,0表示可以走的路。数据保证有唯一解,不考虑有多解的情况,即迷宫只有一条通道。
36 |
37 | 输出描述:
38 | 左上角到右下角的最短路径,格式如样例所示。
39 |
40 | 输入例子:
41 | 5 5
42 | 0 1 0 0 0
43 | 0 1 0 1 0
44 | 0 0 0 0 0
45 | 0 1 1 1 0
46 | 0 0 0 1 0
47 |
48 | 输出例子:
49 | (0,0)
50 | (1,0)
51 | (2,0)
52 | (2,1)
53 | (2,2)
54 | (2,3)
55 | (2,4)
56 | (3,4)
57 | (4,4)
--------------------------------------------------------------------------------
/079-查找组成一个偶数最接近的两个素数/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2016-01-03 20:44
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | int n = scanner.nextInt();
14 | System.out.println(findPrime(n));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | private static String findPrime(int n) {
21 |
22 | for (int i = n / 2; i >= 2; i--) {
23 | if (isPrime(i) && isPrime(n - i)) {
24 | return i + "\n" + (n - i);
25 | }
26 | }
27 |
28 | return null;
29 | }
30 |
31 | private static boolean isPrime(int n) {
32 | if (n < 2) {
33 | return false;
34 | }
35 |
36 | int sqrt = (int) Math.sqrt(n);
37 |
38 | for (int i = 2; i <= sqrt; i++) {
39 | if (n % i == 0) {
40 | return false;
41 | }
42 | }
43 |
44 | return true;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/058-合法IP/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Arrays;
2 | import java.util.Scanner;
3 |
4 | /**
5 | * Author: 王俊超
6 | * Date: 2015-12-25 16:04
7 | * All Rights Reserved !!!
8 | */
9 | public class Main {
10 | public static void main(String[] args) {
11 | Scanner scanner = new Scanner(System.in);
12 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
13 | while (scanner.hasNext()) {
14 | String input = scanner.nextLine();
15 | System.out.println(ipCheck(input));
16 | }
17 |
18 | scanner.close();
19 | }
20 |
21 | private static String ipCheck(String s) {
22 | final String YES = "YES";
23 | final String NO = "NO";
24 |
25 | String[] ss = s.split("\\.");
26 |
27 | if (ss.length != 4) {
28 | return NO;
29 | }
30 |
31 | for (int i = 0; i < ss.length; i++) {
32 | try {
33 | int num = Integer.parseInt(ss[i]);
34 | if (num < 0 || num > 255) {
35 | return NO;
36 | }
37 | } catch (Exception ex) {
38 | return NO;
39 | }
40 | }
41 |
42 | return YES;
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/021-汽水瓶/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-23 10:52
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | int num;
13 | while (scanner.hasNextInt() && (num = scanner.nextInt()) != 0) {
14 | System.out.println(bottle(num));
15 | }
16 | scanner.close();
17 | }
18 |
19 | private static int bottle(int num) {
20 | final int BASE = 3;
21 |
22 | if (num < BASE - 1 ) {
23 | return 0;
24 | }
25 |
26 | int result = 0;
27 |
28 |
29 | while (num > BASE - 1) {
30 | // 本次喝的饮料数
31 | int drink = num / BASE;
32 | // 总共喝的饮料
33 | result += drink;
34 | // 手上目前有的瓶子
35 | num = num % BASE + drink;
36 | }
37 |
38 | if (num == BASE - 1) {
39 | // 如果还有bASE-1个瓶子,那就可以再向老板借一瓶,喝完就有三个瓶子
40 | // 又可以换一瓶,又多喝了一瓶
41 | result++;
42 | }
43 |
44 | return result;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/052-输入整型数组和排序标识,对其元素按照升序或降序进行排序/src/data.txt:
--------------------------------------------------------------------------------
1 | 8
2 | 1 2 4 9 3 55 64 25
3 | 0
4 |
5 | 8
6 | 1 2 4 9 3 55 64 25
7 | 1
8 |
9 | 202 566 55461 34431 13321 12965 21890 59745 28165 20281 13499 27982 77285 75626 29072 38901 19612 26742 22419 9270 30476 94647 75337 74267 33862 34987 46545 9591 463 24660 47957 86031 68843 5890 26992 35688 72392 80521 76905 37697 23994 62653 57991 4949 7951 10097 71456 3545 26822 47859 22119 52714 25920 24886 3602 26034 9719 84715 76802 65424 63990 90460 39126 4327 17564 18574 15832 65179 68451 1615 12917 2639 27312 79236 95826 36984 76194 83789 48869 33343 89537 9737 6503 55819 73571 43546 30342 26367 21262 47133 78945 35732 93908 24265 51367 67012 50418 94517 51002 10589 63694 76680 6805 48049 22914 52788 83657 82447 15101 78550 13977 4469 82037 35391 15845 80503 72998 24779 9460 67514 61189 84581 67966 67412 4586 87998 82798 33861 59078 92604 54600 43855 39018 7861 28237 54370 1892 21123 16942 64835 9832 85132 47867 32163 39919 81639 9003 86584 36367 77058 38903 24330 44348 88717 73941 62422 85605 17297 36119 72523 11411 56621 52471 85575 86821 68452 4279 28229 40806 66387 38165 51853 85033 68269 78841 7238 11004 36235 90312 20842 79829 30427 73024 62938 27266 62212 70054 25830 22305 94602 73078 82674 11809 21868 80558 18143 9505 90486 77343 59449 57464 58010 15551 1
--------------------------------------------------------------------------------
/060-自守数/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-25 16:51
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | int n = scanner.nextInt();
14 | System.out.println(calcAutomorphicNumbers(n));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | private static int calcAutomorphicNumbers(int n) {
21 |
22 | int result = 0;
23 |
24 | for (int i = 0; i <= n; i++) {
25 | if (isAutomorphicNumber(i)) {
26 | result++;
27 | }
28 | }
29 |
30 |
31 | return result;
32 | }
33 |
34 | private static boolean isAutomorphicNumber(int n) {
35 |
36 | int s = n * n;
37 |
38 | while (n != 0) {
39 | if (s % 10 == n % 10) {
40 | s /= 10;
41 | n /= 10;
42 | } else {
43 | return false;
44 | }
45 | }
46 |
47 | return true;
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/066-求解立方根/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-27 16:40
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | double d = scanner.nextDouble();
14 | System.out.printf("%.1f", getCubeRoot(d));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | /**
21 | * 使用牛顿迭代法求立方根
22 | * 已知利用牛顿迭代法求方程F(x)=0的解的公式为X[n+1] = X[n] - F(X[n])/F'(X[n]),
23 | * 其中x[n]为第n次利用此公式求得值。
24 | * 假如函数F(X) = X^m - a, 则根据牛顿迭代法第n+1次求方程F(x) = 0的解为X[n+1],
25 | * 且X[n+1] = (1-1/m)*X[n] +a/(n*X[n]^(m-1)) - (X[n]*X[n]*X[n]+a)/3*X[n]*X[n]。
26 | *
27 | * @param x
28 | * @return
29 | */
30 | private static double getCubeRoot(double x) {
31 |
32 | double x0;
33 | double x1 = x;
34 | do {
35 | x0 = x1;
36 | x1 = 2.0 / 3.0 * x0 + x / 3.0 / (x0 * x0);
37 | } while (Math.abs(x1 - x0) > 0.000001);
38 |
39 | return x1;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/018-识别有效的IP地址和掩码并进行分类统计/src/readme.txt:
--------------------------------------------------------------------------------
1 | 识别有效的IP地址和掩码并进行分类统计
2 | 参与人数:0时间限制:1秒空间限制:32768K
3 | 通过比例:0.00%
4 | 算法知识视频讲解
5 | 题目描述
6 |
7 | 请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。
8 | 所有的IP地址划分为 A,B,C,D,E五类
9 | A类地址1.0.0.0~126.255.255.255;
10 | B类地址128.0.0.0~191.255.255.255;
11 | C类地址192.0.0.0~223.255.255.255;
12 | D类地址224.0.0.0~239.255.255.255;
13 | E类地址240.0.0.0~255.255.255.255
14 |
15 | 私网IP范围是: 10.0.0.0~10.255.255.255 172.16.0.0~172.31.255.255 192.168.0.0~192.168.255.255
16 | 子网掩码为前面是连续的1,然后全是0
17 | 输入描述:
18 |
19 | 多行字符串。每行一个IP地址和掩码,已~隔开。如:
20 |
21 |
22 |
23 | 10.70.44.68~255.254.255.0
24 |
25 |
26 |
27 | 1.0.0.1~255.0.0.0
28 |
29 |
30 |
31 | 192.168.0.2~255.255.255.0
32 |
33 |
34 |
35 | 19..0.~255.255.255.0
36 |
37 |
38 | 输出描述:
39 |
40 | 统计A、B、C、D、E、错误IP地址或错误掩码、私有IP的个数,之间以空格隔开,根据上面的IP,可以得到:
41 |
42 |
43 |
44 | 1.0.0.1~255.0.0.0 ----A类
45 |
46 |
47 |
48 | 192.168.0.2~255.255.255.0 ----C类,私有
49 |
50 |
51 |
52 | 10.70.44.68~255.254.255.0----错误的掩码
53 |
54 |
55 |
56 | 19..0.~255.255.255.0-----错误的IP
57 |
58 |
59 |
60 | 可以得到统计数据如下:
61 |
62 |
63 |
64 | 1 0 1 0 0 2 1
65 |
66 | 输入例子:
67 |
68 | 10.70.44.68~255.254.255.0
69 | 1.0.0.1~255.0.0.0
70 | 192.168.0.2~255.255.255.0
71 | 19..0.~255.255.255.0
72 |
73 | 输出例子:
74 |
75 | 1 0 1 0 0 2 1
--------------------------------------------------------------------------------
/069-简单错误记录/src/data4.txt:
--------------------------------------------------------------------------------
1 | G:\rp\onajqj\maahmq 631
2 | E:\njfgjkcrh 641
3 | C:\co\zk\ao\bxgxjfgrwckfxekeqro 629
4 | D:\mf\si\jmfdahkeffyjjsf 646
5 | E:\wn\arefkiz 633
6 | C:\gpjleb\cinhhx\zjydgr\njfgjkcrh 640
7 | E:\nwrrhx\qyw\bxgxjfgrwckfxekeqro 636
8 | G:\usgsl\ywr\tve\cqekvaxypemktyurn 647
9 | C:\jftbig\arefkiz 650
10 | F:\rgk\cai\arefkiz 640
11 | D:\tvse\vs\dhzrmy\njfgjkcrh 634
12 | E:\coba\qbs\xagq\njfgjkcrh 628
13 | F:\wnfsmf\oxrvbv\njfgjkcrh 632
14 | C:\khqx\nv\jmfdahkeffyjjsf 637
15 | F:\hm\ra\uaxckn\bxgxjfgrwckfxekeqro 647
16 | D:\soq\jmfdahkeffyjjsf 642
17 | F:\moxnw\szxcdhlaytgj 639
18 | E:\avcop\jd\vwtrt\njfgjkcrh 650
19 | E:\hou\vv\szxcdhlaytgj 631
20 | C:\uozkwd\bxgxjfgrwckfxekeqro 650
21 | F:\jmfdahkeffyjjsf 650
22 | E:\hgoxms\nwax\szxcdhlaytgj 633
23 | F:\vylww\zhh\cqekvaxypemktyurn 643
24 | C:\njfgjkcrh 637
25 | F:\bfn\dxwjje\jmfdahkeffyjjsf 632
26 | E:\bxgxjfgrwckfxekeqro 634
27 | G:\gwuusj\ized\qq\szxcdhlaytgj 646
28 | F:\arefkiz 644 G:\zsw\uewu\arefkiz 634
29 | E:\ja\zg\njfgjkcrh 644
30 | D:\gfute\ju\wuy\szxcdhlaytgj 636
31 | C:\mpgcx\kcgi\arefkiz 645
32 | C:\zayn\jmfdahkeffyjjsf 648
33 | F:\kkplu\avvw\hbzmwj\jmfdahkeffyjjsf 648
34 | E:\maahmq 631
35 | E:\hs\xnto\jmfdahkeffyjjsf 645
36 | G:\cqekvaxypemktyurn 633
37 | D:\maahmq 646
38 | E:\jmfdahkeffyjjsf 636
39 | G:\hbvm\szxcdhlaytgj 642
--------------------------------------------------------------------------------
/029-统计每个月兔子的总数/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-24 13:27
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | int input = scanner.nextInt();
14 | System.out.println(countRabbit(input));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | /**
21 | * 统计第n个月的兔子总数
22 | * 兔子可以看作第一个月未成熟,第二个月成熟,第三个月产仔,可以构造一个“斐波那契数列”问题
23 | *
24 | * @param input
25 | * @return
26 | */
27 | private static int countRabbit(int input) {
28 |
29 | if (input <= 0) {
30 | return 0;
31 | } else if (input <= 2) {
32 | return 1;
33 | } else {
34 |
35 | int prev1 = 1;
36 | int prev2 = 1;
37 | int result = 0;
38 | for (int i = 3; i <= input; i++) {
39 | result = prev1 + prev2;
40 | prev1 = prev2;
41 | prev2 = result;
42 | }
43 | return result;
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/045-计算日期到天数转换/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-24 21:46
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | int year = scanner.nextInt();
14 | int month = scanner.nextInt();
15 | int day = scanner.nextInt();
16 |
17 | System.out.println(calculate(year, month, day));
18 | }
19 |
20 | scanner.close();
21 | }
22 |
23 | private static int calculate(int year, int month, int day) {
24 |
25 | int[] dayOfMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
26 | // 如果是闰年
27 | if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
28 | dayOfMonth[1] = 29;
29 | }
30 |
31 | if (month < 1 || month > 12 || day < 1 || day > dayOfMonth[month - 1]) {
32 | return -1;
33 | }
34 |
35 |
36 | for (int i = 0; i < month - 1; i++) {
37 | day += dayOfMonth[i];
38 | }
39 |
40 | return day;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/049-尼科彻斯定理/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-25 09:04
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | int n = scanner.nextInt();
14 | System.out.println(getSequeOddNum(n));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | /**
21 | * n个连续奇数之和
22 | * 简单说明:
23 | * 如果n是奇数,则从n^2-(n-1),n^2-(n-3)...n^2-(2),n^2-(0),n^2+(2)...n^2+(n-3),n^2+(n-1) 一共有n个数,和为n^3
24 | * 如果n是偶数,则从n^2-(n-1),n^2-(n-3)...n^2-(1),n^2+(1)...n^2+(n-3),n^2+(n-1) 一共有n个数,和为n^3
25 | *
26 | * @param n
27 | * @return
28 | */
29 | private static String getSequeOddNum(int n) {
30 |
31 | int lo = n * n - (n - 1);
32 | int hi = n * n + (n - 1);
33 |
34 | StringBuilder builder = new StringBuilder();
35 | for (int i = lo; i <= hi; i += 2) {
36 | builder.append(i).append('+');
37 | }
38 |
39 | return builder.substring(0, builder.length() - 1);
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/091-数据分类处理/src/readme.md:
--------------------------------------------------------------------------------
1 | #题目描述
2 | 信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、QQ用户、手机号码、银行帐号等信息及活动记录。
3 | 采集输入大数据和分类规则,通过大数据分类处理程序,将大数据分类输出。
4 |
5 | #输入描述:
6 | 一组输入整数序列I和一组规则整数序列R,I和R序列的第一个整数为序列的个数(个数不包含第一个整数);整数范围为0~0xFFFFFFFF,序列个数不限
7 |
8 |
9 | #输出描述:
10 | 从R依次中取出R,对I进行处理,找到满足条件的I:
11 | I整数对应的数字需要连续包含R对应的数字。比如R为23,I为231,那么I包含了R,条件满足 。
12 | 按R从小到大的顺序:
13 | (1)先输出R;
14 | (2)再输出满足条件的I的个数;
15 | (3)然后输出满足条件的I在I序列中的位置索引(从0开始);
16 | (4)最后再输出I。
17 | 附加条件:
18 | (1)R需要从小到大排序。相同的R只需要输出索引小的以及满足条件的I,索引大的需要过滤掉
19 | (2)如果没有满足条件的I,对应的R不用输出
20 | (3)最后需要在输出序列的第一个整数位置记录后续整数序列的个数(不包含“个数”本身)
21 |
22 | 序列I:15,123,456,786,453,46,7,5,3,665,453456,745,456,786,453,123(第一个15表明后续有15个整数)
23 | 序列R:5,6,3,6,3,0(第一个5表明后续有5个整数)
24 | 输出:30, 3,6,0,123,3,453,7,3,9,453456,13,453,14,123,6,7,1,456,2,786,4,46,8,665,9,453456,11,456,12,786
25 | 说明:
26 | 30----后续有30个整数
27 | 3----从小到大排序,第一个R为0,但没有满足条件的I,不输出0,而下一个R是3
28 | 6--- 存在6个包含3的I
29 | 0--- 123所在的原序号为0
30 | 123--- 123包含3,满足条件
31 |
32 | #输入例子:
33 | 15 123 456 786 453 46 7 5 3 665 453456 745 456 786 453 123
34 | 5 6 3 6 3 0
35 |
36 | #输出例子:
37 | 30 3 6 0 123 3 453 7 3 9 453456 13 453 14 123 6 7 1 456 2 786 4 46 8 665 9 453456 11 456 12 786
--------------------------------------------------------------------------------
/030-整数与IP地址间的转换/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-24 13:55
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 |
11 | Scanner scanner = new Scanner(System.in);
12 | String str = "";
13 |
14 | while (scanner.hasNext()) {
15 | str = scanner.next();
16 | if (str.contains(".")) {
17 | System.out.println(ipToInt(str));
18 | } else {
19 | System.out.println(intToIp(str));
20 | }
21 | }
22 |
23 | scanner.close();
24 | }
25 |
26 | private static String intToIp(String str) {
27 | String result = "";
28 | Long input = Long.parseLong(str);
29 | for (int i = 3; i >= 0; i--) {
30 | result = (input & 0x000000FF) + "." + result;
31 | input >>>= 8;
32 | }
33 | return result.substring(0, result.length() - 1);
34 | }
35 |
36 | private static long ipToInt(String str) {
37 | String[] array;
38 | long result = 0;
39 | array = str.split("[.]");
40 | for (String s : array) {
41 | result = (result << 8) + Integer.parseInt(s);
42 | }
43 | return result;
44 | }
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/062-表示数字/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-25 17:04
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | String input = scanner.nextLine();
14 | System.out.println(markNumber(input));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | private static String markNumber(String s) {
21 |
22 |
23 | boolean marked = false;
24 |
25 | StringBuilder builder = new StringBuilder();
26 |
27 | for (int i = 0; i < s.length(); i++) {
28 | char c = s.charAt(i);
29 |
30 | if (!marked && c >= '0' && c <= '9') {
31 | builder.append('*');
32 | marked = true;
33 | } if (i > 0 && marked && (c< '0' || c > '9')) {
34 | builder.append('*');
35 | marked = false;
36 | }
37 | builder.append(c);
38 | }
39 |
40 | if (marked) {
41 | builder.append('*');
42 | }
43 |
44 | return builder.toString();
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/100-配置文件恢复/src/readme.md:
--------------------------------------------------------------------------------
1 | #题目描述
2 |
3 | 有6条配置命令,它们执行的结果分别是:
4 | 命令 执行
5 | reset reset what
6 | reset board board fault
7 | board add where to add
8 | board delet no board at all
9 | reboot backplane impossible
10 | backplane abort install first
11 | he he unkonw command
12 |
13 | 注意:he he不是命令。
14 | 为了简化输入,方便用户,以“最短唯一匹配原则”匹配:
15 | 1、若只输入一字串,则只匹配一个关键字的命令行。例如输入:r,根据该规则,匹配命令reset,
16 | 执行结果为:reset what;输入:res,根据该规则,匹配命令reset,执行结果为:reset what;
17 | 2、若只输入一字串,但本条命令有两个关键字,则匹配失败。例如输入:reb,可以找到命令reboot backpalne,
18 | 但是该命令有两个关键词,所有匹配失败,执行结果为:unkown command
19 | 3、若输入两字串,则先匹配第一关键字,如果有匹配但不唯一,继续匹配第二关键字,如果仍不唯一,匹配失败。
20 | 例如输入:r b,找到匹配命令reset board,执行结果为:board fault。
21 | 4、若输入两字串,则先匹配第一关键字,如果有匹配但不唯一,继续匹配第二关键字,如果唯一,匹配成功。
22 | 例如输入:b a,无法确定是命令board add还是backplane abort,匹配失败。
23 | 5、若输入两字串,第一关键字匹配成功,则匹配第二关键字,若无匹配,失败。例如输入:bo a,确定是命令board add,匹配成功。
24 | 6、若匹配失败,打印“unkonw command”
25 |
26 |
27 | #输入描述:
28 | 多行字符串,每行字符串一条命令
29 |
30 |
31 | #输出描述:
32 | 执行结果,每条命令输出一行
33 |
34 | #输入例子:
35 | reset
36 | reset board
37 | board add
38 | board delet
39 | reboot backplane
40 | backplane abort
41 |
42 | #输出例子:
43 | reset what
44 | board fault
45 | where to add
46 | no board at all
47 | impossible
48 | install first
--------------------------------------------------------------------------------
/032-输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-24 14:42
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | String input = scanner.nextLine();
14 | System.out.print(count(input));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | private static String count(String s) {
21 | int[] result = new int[4];
22 |
23 | for (int i = 0; i < s.length(); i++) {
24 | char c = s.charAt(i);
25 |
26 | if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z') {
27 | result[0]++;
28 | } else if (c == ' ') {
29 | result[1]++;
30 | } else if (c >= '0' && c <= '9') {
31 | result[2]++;
32 | } else {
33 | result[3]++;
34 | }
35 | }
36 |
37 | StringBuilder builder = new StringBuilder();
38 | for (int i : result) {
39 | builder.append(i).append('\n');
40 | }
41 |
42 | return builder.toString();
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/088-按字节截取字符串/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2016-01-06 14:48
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | String input = scanner.next();
14 | int n = scanner.nextInt();
15 | System.out.println(getStringByBytes(input, n));
16 | }
17 |
18 | scanner.close();
19 | }
20 |
21 | private static String getStringByBytes(String s, int n) {
22 | StringBuilder builder = new StringBuilder();
23 |
24 | for (int i = 0, sum = 0; i < s.length(); i++) {
25 | if (String.valueOf(s.charAt(i)).getBytes().length == 1) {
26 | sum += 1;
27 | builder.append(s.charAt(i));
28 |
29 | if (sum >= n) {
30 | break;
31 | }
32 | } else {
33 | sum += 2;
34 | if (sum >= n) {
35 | break;
36 | }
37 | builder.append(s.charAt(i));
38 | }
39 | }
40 |
41 | return builder.toString();
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/088-按字节截取字符串/src/Main2.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2016-01-06 15:03
6 | * All Rights Reserved !!!
7 | */
8 | public class Main2 {
9 | public static void main(String[] args) {
10 | // Scanner sc = new Scanner(System.in);
11 | Scanner sc = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (sc.hasNext()) {
13 | String str = sc.next();
14 | int leng = sc.nextInt();
15 | int sum = 0;
16 | int flag = 0;
17 | StringBuffer sb = new StringBuffer();
18 | for (int i = 0; i < str.length(); i++) {
19 | if (sum == leng) {
20 | break;
21 | }
22 | if (sum > leng) {
23 | flag = 1;
24 | break;
25 | }
26 | if (String.valueOf(str.charAt(i)).getBytes().length == 1) {
27 | sum += 1;
28 | } else {
29 | sum += 2;
30 | }
31 | sb.append(str.charAt(i));
32 | }
33 | if (flag == 1) {
34 | System.out.println(sb.substring(0, sb.length() - 1));
35 | } else {
36 | System.out.println(sb);
37 | }
38 | }
39 |
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/076-蛇形矩阵/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2016-01-03 13:58
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | int n = scanner.nextInt();
14 | System.out.print(serpentineMatrix(n));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | /**
21 | * 蛇形矩阵
22 | *
23 | * @param n 矩阵行数
24 | * @return 矩阵输出结果
25 | */
26 | private static String serpentineMatrix(int n) {
27 |
28 | StringBuilder builder = new StringBuilder();
29 |
30 |
31 | for (int i = 1; i <= n; i++) {
32 | // 每一行的第一个元素是(i-1)*i/2+1
33 | // 每一行的元素个数是n-i
34 | // 初始间隔是i+1,之后每一个间隔比上一个间隔多1,之后的每个元素是前一个元素加上间隔
35 | for (int j = 1, start = (i - 1) * i / 2 + 1, step = i + 1; j <= n - i + 1; j++, start += step, step++) {
36 | builder.append(start).append(' ');
37 | }
38 |
39 | // 设置换行符
40 | builder.setCharAt(builder.length()-1, '\n');
41 |
42 | }
43 |
44 |
45 | return builder.toString();
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/087-在字符串中找出连续最长的数字串/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2016-01-04 11:13
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | String input = scanner.nextLine();
14 | System.out.println(maxNum(input));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | private static String maxNum(String s) {
21 |
22 | int max = 0;
23 | // int idx = 0;
24 | int cur = 0;
25 | String result = "";
26 |
27 | for (int i = 0; i < s.length(); i++) {
28 | char c = s.charAt(i);
29 | if (c >= '0' && c <= '9') {
30 | cur++;
31 | if (max < cur) {
32 | max = cur;
33 | // idx = i;
34 | result = s.substring(i - max + 1, i + 1);
35 | } else if (max == cur) {
36 | result += s.substring(i - max + 1, i + 1);
37 | }
38 | } else {
39 | cur = 0;
40 | }
41 | }
42 |
43 | return result + "," + max;
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/034-找出字符串中第一个只出现一次的字符/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.*;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-24 15:59
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | String input = scanner.nextLine();
14 | System.out.println(findFirst(input));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | private static char findFirst(String s) {
21 |
22 | Map map = new HashMap<>();
23 |
24 | for (int i = 0; i < s.length(); i++) {
25 | char c = s.charAt(i);
26 | // 如果已经出现过就标记为无效
27 | if (map.containsKey(c)) {
28 | map.put(c, Integer.MAX_VALUE);
29 | } else {
30 | // 标记第一次出现的下标
31 | map.put(c, i);
32 | }
33 | }
34 |
35 |
36 | Collection set = map.values();
37 | int min = Integer.MAX_VALUE;
38 | // 找最小的下标
39 | for (int i : set) {
40 | if (min > i) {
41 | min = i;
42 | }
43 | }
44 |
45 | return min == Integer.MAX_VALUE ? '.' : s.charAt(min);
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/004-字符串分隔/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-22 19:11
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | StringBuilder builder = new StringBuilder(256);
12 | while (scanner.hasNext()) {
13 | builder.setLength(0);
14 | String input = scanner.nextLine();
15 | stringSplit(builder, input);
16 | input = scanner.nextLine();
17 | stringSplit(builder, input);
18 | System.out.print(builder);
19 | }
20 |
21 | scanner.close();
22 | }
23 |
24 | private static void stringSplit(StringBuilder builder, String str) {
25 | if (str == null || str.length() < 1) {
26 | return;
27 | }
28 |
29 | int pos = 0;
30 | while ((pos += 8) < str.length()) {
31 | builder.append(str.substring(pos - 8, pos)).append("\n");
32 |
33 | }
34 |
35 | // 如果str.length() < pos,说明最后的不足8个字符或者刚好8个
36 | if (str.length() <= pos) {
37 | builder.append(str.substring(pos - 8, str.length()));
38 |
39 | for (int i = str.length(); i < pos; i++) {
40 | builder.append(0);
41 | }
42 | builder.append("\n");
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/099-MP3光标位置/src/readme.md:
--------------------------------------------------------------------------------
1 | #题目描述
2 | MP3 Player因为屏幕较小,显示歌曲列表的时候每屏只能显示几首歌曲,用户要通过上下键才能浏览所有的歌曲。
3 | 为了简化处理,假设每屏只能显示4首歌曲,光标初始的位置为第1首歌。
4 |
5 | 现在要实现通过上下键控制光标移动来浏览歌曲列表,控制逻辑如下:
6 | 歌曲总数<=4的时候,不需要翻页,只是挪动光标位置。
7 | 光标在第一首歌曲上时,按Up键光标挪到最后一首歌曲;光标在最后一首歌曲时,按Down键光标挪到第一首歌曲。
8 | -> 1 1
9 | 2 ---UP--> 2
10 | 3 3
11 | 4 -> 4
12 | 其他情况下用户按Up键,光标挪到上一首歌曲;用户按Down键,光标挪到下一首歌曲。
13 | 1 1
14 | 2 ---UP-->-> 2
15 | -> 3 3
16 | 4 4
17 |
18 | 2. 歌曲总数大于4的时候(以一共有10首歌为例):
19 |
20 | 特殊翻页:屏幕显示的是第一页(即显示第1 – 4首)时,光标在第一首歌曲上,用户按Up键后,屏幕要显示最后
21 | 一页(即显示第7-10首歌),同时光标放到最后一首歌上。同样的,屏幕显示最后一页时,光标在最后一首歌曲上,
22 | 用户按Down键,屏幕要显示第一页,光标挪到第一首歌上。
23 | -> 1 7
24 | 2 ---UP--> 8
25 | 3 9
26 | 4 -> 10
27 | 一般翻页:屏幕显示的不是第一页时,光标在当前屏幕显示的第一首歌曲时,用户按Up键后,屏幕从当前歌曲的上
28 | 一首开始显示,光标也挪到上一首歌曲。光标当前屏幕的最后一首歌时的Down键处理也类似。
29 | -> 4 -> 3
30 | 5 ---UP--> 4
31 | 6 5
32 | 7 6
33 | 其他情况,不用翻页,只是挪动光标就行。
34 |
35 | #输入描述:
36 | 输入说明:
37 | 1 输入歌曲数量
38 | 2 输入命令 U或者D
39 |
40 |
41 | #输出描述:
42 | 输出说明
43 | 1 输出当前列表
44 | 2 输出当前选中歌曲
45 |
46 | #输入例子:
47 | 10
48 | UUUU
49 |
50 | #输出例子:
51 | 7 8 9 10
52 | 7
--------------------------------------------------------------------------------
/069-简单错误记录/src/data2.txt:
--------------------------------------------------------------------------------
1 | C:\gtu\vcy\jk\zwthkipl 636
2 | G:\rsle\lsax\yalcxu\vwhysms 637
3 | F:\fzqz 640
4 | E:\lswb\styce\thjnbxdvg 645
5 | F:\up\qflvvayylipvj 635
6 | C:\pivw\rkd 644
7 | E:\tlkbjb\pcvnvm\qh\fzqz 633
8 | E:\ezke\xvrdkuesnjerakzhs 641
9 | E:\qflvvayylipvj 639
10 | F:\ybpxk 644
11 | G:\rfdr\faxpyhyznsssbo 630
12 | E:\xktax\osekgaqy 646
13 | C:\te 633
14 | G:\albed\ffc\jclzfq\h 631
15 | F:\zsshil\pkue\mazocurlwufmkkrw 635
16 | E:\dmj\uefo\syabgm\qflvvayylipvj 643
17 | F:\pgdiwvceluyzft 634
18 | D:\xiqck\dta\lnh 639
19 | E:\nu\nz\wwjpch\fzqz 650
20 | E:\gfsahypjzwfglvou 644
21 | G:\qh\thjnbxdvg 641
22 | C:\cp\voause\mf\hebgpyzpyyybiywpv 632
23 | E:\de\vet\vdooytekbghohqz 631
24 | E:\cox\pvg\tlrlr 640
25 | G:\hkc\fllkwmwlgiqahxbfs 638
26 | E:\apjnogffvkwnv 637
27 | E:\nldefh\ar\oqsb\uyobrilaabapini 630
28 | F:\wgotle\ar\wgh\hebgpyzpyyybiywpv 639
29 | G:\nrekjavm 634
30 | C:\mvngfg\lfjnvz\xvrdkuesnjerakzhs 634
31 | F:\exne\vh\kqh\fzqz 641
32 | F:\lepvz 642
33 | G:\qg\hcbh\uknyte\pgdiwvceluyzft 636
34 | F:\ho\cn\uyobrilaabapini 637
35 | E:\xbc\fzqz 642
36 | G:\ju\nmdd\fzqz 643
37 | G:\lzpmdx\rxp\ybpxk 629
38 | D:\fc\lnh 629
39 | D:\dsgvo\zwthkipl 631
40 | G:\pujc\cgorfjzkqmnjathbiip 640
41 | G:\vfhyp\cs\rrt 638
42 | F:\oteh\ti\urajfw\tlrlr 636
43 | C:\crdp\qwptjlorrmnv 642
44 | D:\kcl\fqzs\zlm\pgdiwvceluyzft 640
45 | G:\faxpyhyznsssbo 639
46 | D:\swnhezhgdcwwbmkyqt 637
47 | D:\azo\sry\faxpyhyznsssbo 633
48 | C:\beqt\eh\dm\dlhehjccfdgrrzyj 642
49 | F:\lepvz 635
--------------------------------------------------------------------------------
/100-配置文件恢复/src/data2.txt:
--------------------------------------------------------------------------------
1 | reboot backplane
2 | reset
3 | reset
4 | reset
5 | he he
6 | board add
7 | reboot backplane
8 | reset
9 | reset
10 | he he
11 | reset
12 | board add
13 | he he
14 | reset
15 | reset
16 | board delet
17 | he he
18 | board delet
19 | backplane abort
20 | reset
21 | board add
22 | reset
23 | he he
24 | board add
25 | reboot backplane
26 | board add
27 | reset board
28 | he he
29 | reboot backplane
30 | board add
31 | board delet
32 | board add
33 | board add
34 | reset board
35 | board add
36 | board delet
37 | board delet
38 | reset board
39 | reset
40 | he he
41 | reboot backplane
42 | backplane abort
43 | reboot backplane
44 | reboot backplane
45 | board delet
46 | he he
47 | reset
48 | board add
49 | reboot backplane
50 | board add
51 | reboot backplane
52 | board add
53 | board add
54 | reset
55 | reset
56 | reboot backplane
57 | reset
58 | board delet
59 | he he
60 | reset
61 | reboot backplane
62 | backplane abort
63 | reboot backplane
64 | reboot backplane
65 | reset board
66 | reboot backplane
67 | reset board
68 | reboot backplane
69 | he he
70 | board add
71 | he he
72 | reset board
73 | board delet
74 | board add
75 | board add
76 | board delet
77 | reset board
78 | reset
79 | board delet
80 | he he
81 | board add
82 | he he
83 | board delet
84 | he he
85 | backplane abort
86 | he he
87 | board add
88 | board delet
89 | board delet
90 | backplane abort
91 | reboot backplane
92 | reset
93 | reset board
94 | board add
95 | backplane abort
--------------------------------------------------------------------------------
/024-字符串排序/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015/12/23 13:51
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 |
10 | public static void main(String[] args) {
11 | Scanner scanner = new Scanner(System.in);
12 | while (scanner.hasNext()) {
13 | String str = scanner.nextLine();
14 |
15 | // 剔除输入串中的非英文字母字符
16 | // 同时按输入的顺序和字母顺序串成一个字符串
17 | StringBuilder builder = new StringBuilder();
18 | for (int i = 0; i < 26; i++) {
19 | for (int j = 0; j < str.length(); j++) {
20 | if (str.charAt(j) == (i + 'a') || str.charAt(j) == (i + 'A')) {
21 | builder.append(str.charAt(j));
22 | }
23 | }
24 | }
25 | StringBuilder result = new StringBuilder();
26 | int k = 0;
27 | for (int i = 0; i < str.length(); i++) {
28 | if (!isLetter(str.charAt(i))) {
29 | result.append(str.charAt(i));
30 | } else {
31 | result.append(builder.charAt(k));
32 | k++;
33 | }
34 | }
35 |
36 | System.out.println(result);
37 | }
38 |
39 | scanner.close();
40 | }
41 |
42 | private static boolean isLetter(char c) {
43 | return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/020-简单密码破解/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-23 10:39
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | String input = scanner.nextLine();
14 | System.out.println(encrypt(input));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | private static String encrypt(String input) {
21 |
22 | // 掩码表
23 | final char[][] mask = {
24 | {'2', '2', '2', '3', '3', '3', '4', '4', '4', '5', '5', '5', '6', '6', '6', '7', '7', '7', '7', '8', '8', '8', '9', '9', '9', '9'},
25 | {'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a'}
26 | };
27 |
28 | char[] chars = input.toCharArray();
29 |
30 | for (int i = 0; i < chars.length; i++) {
31 | // 如果是小写字母,就要转变成数字符
32 | if (chars[i] >= 'a' && chars[i] <= 'z') {
33 | chars[i] = mask[0][chars[i] - 'a'];
34 | } else if (chars[i] >= 'A' && chars[i] <= 'Z') {
35 | chars[i] = mask[1][chars[i] - 'A'];
36 | }
37 | }
38 |
39 |
40 | return new String(chars);
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/008-合并表记录/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 | import java.util.SortedMap;
3 | import java.util.TreeMap;
4 |
5 | /**
6 | * Author: 王俊超
7 | * Date: 2015/12/21 16:33
8 | * All Rights Reserved !!!
9 | */
10 | public class Main {
11 | public static void main(String[] args) {
12 | Scanner scanner = new Scanner(System.in);
13 |
14 | while (scanner.hasNext()) {
15 | int pares = Integer.parseInt(scanner.nextLine());
16 | SortedMap map = new TreeMap<>();
17 | for (int i = 0; i < pares; i++) {
18 | String[] nums = scanner.nextLine().split("\\s+");
19 | addPare(map, nums);
20 | }
21 |
22 | System.out.print(mapToString(map));
23 | }
24 |
25 | scanner.close();
26 | }
27 |
28 | private static void addPare(SortedMap map, String[] nums) {
29 |
30 | int key = Integer.parseInt(nums[0]);
31 | int val = Integer.parseInt(nums[1]);
32 |
33 | if (map.containsKey(key)) {
34 | map.put(key, map.get(key) + val);
35 | } else {
36 | map.put(key, val);
37 | }
38 | }
39 |
40 | private static String mapToString(SortedMap, ?> map) {
41 |
42 | StringBuilder builder = new StringBuilder();
43 |
44 | for (SortedMap.Entry, ?> e : map.entrySet()) {
45 | builder.append(e.getKey()).append(" ").append(e.getValue()).append("\n");
46 | }
47 |
48 | return builder.toString();
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/063-字符串分割/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Arrays;
2 | import java.util.Scanner;
3 |
4 | /**
5 | * Author: 王俊超
6 | * Date: 2015-12-27 16:18
7 | * Declaration: All Rights Reserved !!!
8 | */
9 | public class Main {
10 | public static void main(String[] args) {
11 | Scanner scanner = new Scanner(System.in);
12 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
13 | while (scanner.hasNext()) {
14 | int n = scanner.nextInt();
15 | String[] arr = new String[n];
16 |
17 | for (int i = 0; i < arr.length; i++) {
18 | arr[i] = scanner.next();
19 | }
20 |
21 | System.out.println(convert(arr));
22 | }
23 |
24 | scanner.close();
25 | }
26 |
27 | private static String convert(String[] arr) {
28 |
29 | StringBuilder builder = new StringBuilder(128);
30 | for (String s : arr) {
31 | int pos = 8;
32 |
33 | while (pos <= s.length()) {
34 | builder.append(s.substring(pos - 8, pos)).append('\n');
35 | pos += 8;
36 | }
37 |
38 |
39 | if (pos > s.length()) {
40 | builder.append(s.substring(pos - 8, s.length()));
41 | }
42 |
43 | for (int i = s.length(); i < pos; i++) {
44 | builder.append('0');
45 | }
46 |
47 | builder.append('\n');
48 | }
49 | return builder.substring(0, builder.length() - 1);
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/073-查找兄弟单词/src/data2.txt:
--------------------------------------------------------------------------------
1 | 384 d abcdb bd baaa badd cdac dab bdabb acacb cdddd addb b cd abccb caa db cdbc d a bca cdbd dcdd c b babdb c ab babca c bbcd dba dad ccbc cadd ca ddd dcad dd c cc abcb bcba bad daa abdad aaddc cd bba bdcaa cbd ccd bbbca cc abb d dcdbd c ba bcdd cabdc abbd bacdc bd d b adcdc ca ddbaa dddda a adc aabc adbad baa bdcba ab cdb dcb bb cad acc acb caacb dadac abc ca daad bccb aa dbdcc bbcad ad cbcda b bcadd b c daacb a dbd dbddd acaaa da ddd abcb bacd b abaaa c bac cc accac ca cb dbc ccdca da cc bbca d cabca aaddb bcabc bcacd bc cbd abcda daad dda abcbb abab a aa dcad c cadab b abc db bcbb b bbbad bc ab c bbbcc ab da baa babcc dac bbdbc aacc aadad c cbdbc dad cba a b ccdab acac aac cb dada aaab aa aad ac dd dbc bbccb add dc cdcd bbbd cda bbcdd acdcc dc ba c dcbb dabbd b cbad bdbd db aaabb acdc aaccd ccbd cc cd aac cabac daa bcda bc ddadb dbc aa dada a dccdb dbdbd daaa db b cba dba dc bda a cc dda bdd b a aabbb cddb bb c ccdd bdc aa ddcb cd d bacdb a c ababb c bbbd acdb cba cbb dbcc a ab adb bb abbbd bbdab abb dcadc acbcb ac daac dadba aa d bc bc adc dbdba cd cda dcd addc bb cdd b dcab acdd adbdb aaaa ddb cdcca dacc b aacc dcbd dcc cad cc aabad bcdb caab ccbcd bab badd bbdb dbdc acc dc aacba aadbb ca dacbb aaadd ddbdc accb dd aa acbc aabcd ba bd bd d babd cbadb bdbcb acba adbcb b cbdb adcb add a cada ac adbbd c bbbda dbda abb ad bc abb d dbc adb bb ddcba bacaa d a ddab dba cbca aaaba ab baca cb bdc cda aadd cdc bcaab cac a c cbb dd c dbccc baa dbbdd cc bb ca bbc c b db cdc b aa aadbd daad ccccb cbc dd abcdb abdbb cbcc ca cc cadad abcd d babab ca dc b adb cc cb ccda cc c acbdd 1
--------------------------------------------------------------------------------
/080-放苹果/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2016-01-03 20:56
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | int m = scanner.nextInt();
14 | int n = scanner.nextInt();
15 |
16 | System.out.println(findWays(m, n));
17 | }
18 |
19 | scanner.close();
20 | }
21 |
22 | private static int findWays(int m, int n) {
23 | int[] result = {0};
24 | for (int i = 1; i <= n; i++) {
25 | findWays2(m, m - i + 1, 1, i, result);
26 | }
27 | return result[0];
28 | }
29 |
30 | /**
31 | * 有n个变量,其和为m,求有多少种解法,每个解的变量按从大到小取值,最小为1
32 | *
33 | * @param m 第i个变量实际可以取的最大值
34 | * @param curMax 可以取的最大值
35 | * @param i 第i个变量
36 | * @param n 总计有n个变量
37 | * @param result 结果统计
38 | */
39 | private static void findWays2(int m, int curMax, int i, int n, int[] result) {
40 | if (m > 0 && m <= curMax && i == n) {
41 | result[0]++;
42 | return;
43 | }
44 |
45 | if (m < 1 || curMax < 1 || i > n) {
46 | return;
47 | }
48 |
49 |
50 | for (int v = curMax; v > 0; v--) {
51 | findWays2(m - v, v, i + 1, n, result);
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/070-记票统计/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.HashMap;
2 | import java.util.Map;
3 | import java.util.Scanner;
4 | /**
5 | * Author: 王俊超
6 | * Date: 2016-01-04 14:55
7 | * All Rights Reserved !!!
8 | */
9 | public class Main {
10 | public static void main(String[] args) {
11 | Scanner scanner = new Scanner(System.in);
12 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
13 | while (scanner.hasNext()) {
14 | int n = scanner.nextInt();
15 | String[] names = new String[n + 1];
16 | Map map = new HashMap<>(n);
17 |
18 | for (int i = 0; i < n; i++) {
19 | names[i] = scanner.next();
20 | map.put(names[i], 0);
21 | }
22 |
23 |
24 | names[n] = "Invalid";
25 | map.put(names[n], 0);
26 |
27 | int v = scanner.nextInt();
28 |
29 | while ((--v) >= 0) {
30 | String s = scanner.next();
31 | if (map.containsKey(s)) {
32 | map.put(s, map.get(s) + 1);
33 | } else {
34 | map.put(names[n], map.get(names[n]) + 1);
35 | }
36 | }
37 |
38 | StringBuilder builder = new StringBuilder();
39 | for (String s: names ) {
40 | builder.append(s).append(" : ").append(map.get(s)).append('\n');
41 | }
42 |
43 | System.out.print(builder.toString());
44 |
45 | }
46 |
47 | scanner.close();
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/028-图片整理/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 | import java.util.StringTokenizer;
3 |
4 | /**
5 | * Author: 王俊超
6 | * Date: 2015-12-24 10:05
7 | * Declaration: All Rights Reserved !!!
8 | */
9 | public class Main {
10 | public static void main(String[] args) {
11 | Scanner scanner = new Scanner(System.in);
12 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
13 | while (scanner.hasNext()) {
14 | String input = scanner.nextLine();
15 | System.out.println(quickSort(input));
16 | }
17 |
18 | scanner.close();
19 | }
20 |
21 | private static String quickSort(String s) {
22 | char[] chars = s.toCharArray();
23 | quickSort(chars, 0, chars.length - 1);
24 | return new String(chars);
25 | }
26 |
27 | private static void quickSort(char[] chars, int beg, int end) {
28 | if (beg < end) {
29 | int lo = beg;
30 | int hi = end;
31 | char pivot = chars[lo];
32 |
33 | while (lo < hi) {
34 | while (lo < hi && chars[hi] >= pivot) {
35 | hi--;
36 | }
37 |
38 | chars[lo] = chars[hi];
39 |
40 | while (lo < hi && chars[lo] <= pivot) {
41 | lo++;
42 | }
43 |
44 | chars[hi] = chars[lo];
45 | }
46 |
47 | chars[lo] = pivot;
48 |
49 | quickSort(chars, beg, lo - 1);
50 | quickSort(chars, lo + 1, end);
51 |
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/046-成绩排序/src/data.txt:
--------------------------------------------------------------------------------
1 | 3 0 fang 90 yang 50 ning 70
2 |
3 | 3 1 fang 90 yang 50 ning 70
4 |
5 | 3
6 | 0
7 | moolgouua 43
8 | aebjag 87
9 | b 67
10 | 28
11 | 1
12 | qhsq 15
13 | ozslg 79
14 | ncttmtsphb 71
15 | a 39
16 | eeiuyzsj 34
17 | nmlrokx 21
18 | pjizylo 90
19 | ec 45
20 | f 12
21 | sh 31
22 | fm 25
23 | ptprphubqk 29
24 | wxdiwv 0
25 | uhlcpjtxad 60
26 | w 20
27 | zwktbpun 70
28 | efzfkf 69
29 | v 31
30 | rsnrgtl 73
31 | lhdo 76
32 | wt 56
33 | mcdwd 14
34 | ydrnoyd 37
35 | gmlfds 76
36 | zx 1
37 | dqx 98
38 | gz 90
39 | kvbzrwrrjj 13
40 |
41 | 119 0 txrevyi 2 bshbreg 25 wx 71 xriyt 41 br 47 rbuqqvjic 100 ndpfojuz 34 eexjhre 21 rhictee 28 kanht 22 ejichusgdu 10 sp 65 ocuddtcdyd 83 qvh 75 uomeundng 5 fgswtdcm 88 inqkf 87 zfhnko 83 ojdpujwy 35 wzgyi 93 l 80 gdmfmjl 12 f 31 fdni 67 ytnlbefa 10 vdfpbizm 13 yror 91 e 14 cx 72 wxf 41 g 1 aln 80 zchmnjicb 28 mfk 64 fosazenls 87 dhzbotlm 32 pqvpag 82 myqqawf 42 nmwrcxloi 18 tz 67 hsyiykb 29 jlp 63 gnremcj 89 zsuzmnrvl 14 cos 5 dt 15 mqulq 31 bdox 19 hvhhblb 91 ogtdl 67 hy 45 wmwksobqs 44 dt 25 okatppi 4 txsqycc 89 djbmtfr 49 n 28 cca 43 kp 27 prnljksw 26 jb 6 zqrzs 8 bqoskic 7 mvgsdkg 2 dqvqxestjh 38 lnz 98 fedd 56 jauvkbai 98 ewpwdmegb 26 oeisemtup 16 lgn 46 ihznixw 3 oia 57 i 90 phqfg 60 oxkymaj 60 w 58 oawquiu 89 hfeprrtdar 24 wg 37 gwvprlhig 74 x 45 ntyo 90 rm 76 gbxphisqps 96 rrlbkwtrzc 88 gc 21 pefjinrzk 13 nuo 86 jnhsz 31 to 26 b 43 bueymur 18 jujwv 18 kf 0 l 61 dcryalrimv 20 oz 24 cpapxy 96 lndq 73 mjd 44 nrybszapvs 70 jip 77 olsttnf 64 ypb 75 zrksdy 17 jnng 87 y 0 ntckc 72 mraolqz 28 o 43 uutgjfh 66 fkedaaeagz 30 ajkmuprxvf 55 flxaqayh 33 hiqozhrcr 11 gcjg 93 jfuesm 55 xxwn 62
42 |
--------------------------------------------------------------------------------
/055-字符串匹配/src/KMP.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Author: 王俊超
3 | * Date: 2015-12-25 15:08
4 | * All Rights Reserved !!!
5 | */
6 | public class KMP {
7 | // 下面的KMP匹配算法,于
8 | private static boolean kmpMatch( String s, String sub) {
9 |
10 | int[] next = getNext(sub);
11 |
12 | // 母串的长度
13 | int m = s.length();
14 | // 子串的长度
15 | int n = sub.length();
16 |
17 | int j = 0;
18 | int i = -1;
19 |
20 | for(; j < m; j++) {
21 | while (sub.charAt(i + 1) != s.charAt(j) && i >= 0) {
22 | i = next[i];
23 | }
24 |
25 | if (sub.charAt(i + 1) == s.charAt(j)) {
26 | i++;
27 | }
28 |
29 | if (i == n - 1) {
30 | return true;
31 | }
32 | }
33 |
34 | return false;
35 | }
36 |
37 | private static int[] getNext(String s) {
38 | // next[j] 表示当 W[j] 与 S[i] 不匹配时,W 应该滑到哪个位置上。
39 | int[] next = new int[s.length()];
40 | next[0] = -1;
41 | next[1] = 0;
42 | // j在前
43 | int i = 0;
44 | int j = -1;
45 |
46 | while (i < s.length() - 1) {
47 | if (j == -1 || s.charAt(i) == s.charAt(j)) {
48 |
49 | if (s.charAt(++i) != s.charAt(++j)) {
50 | next[i] = j;
51 | } else {
52 | // 回退
53 | next[i] = next[j];
54 | }
55 |
56 | } else {
57 | // 回退
58 | j = next[j];
59 | }
60 | }
61 |
62 | return next;
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/013-句子逆序/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015/12/22 13:45
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 |
12 | while (scanner.hasNext()) {
13 | String input = scanner.nextLine();
14 | System.out.println(reverseSentence(input));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 |
21 |
22 | private static String reverseSentence(String str) {
23 |
24 | char[] chars = str.toCharArray();
25 |
26 | // 翻转整个句子
27 | reverse(chars, 0, chars.length - 1);
28 |
29 | for (int i = 0, j; i < chars.length; i = j + 1) {
30 | // 找从i位置开始后的第一个非空白字符
31 | while (i < chars.length && chars[i] ==' ' ) {
32 | i++;
33 | }
34 |
35 | j = i + 1;
36 | // 找i位置之后的第一个空白字符
37 | while (j < chars.length && chars[j] != ' ') {
38 | j++;
39 | }
40 | reverse(chars, i, j - 1);
41 | }
42 |
43 |
44 | return new String(chars);
45 | }
46 |
47 | /**
48 | * 字符数组翻转
49 | * @param str
50 | * @param start
51 | * @param end
52 | */
53 | private static void reverse(char[] str, int start, int end) {
54 | char tmp;
55 | while (start < end) {
56 | tmp = str[start];
57 | str[start] = str[end];
58 | str[end] = tmp;
59 |
60 | start++;
61 | end--;
62 | }
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/002-计算字符个数/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-18 11:00
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 |
12 | /**
13 | * 注意输入的是两行,第一次读取输入的字符串,第二行才是读取输入的字符,
14 | * 找第一行中出现的第二行的字符数的个数,不区分大小写
15 | */
16 |
17 | // 是否还有其它的行,一次可以测试多行
18 | while (scanner.hasNext()) {
19 | String input = scanner.next();
20 | String ch = scanner.next();
21 | System.out.println(countCharNumber(input, ch));
22 | }
23 | scanner.close();
24 | }
25 |
26 | private static int countCharNumber(String input, String chStr) {
27 |
28 | char ch = 0;
29 | for (int i = 0; i < chStr.length(); i++) {
30 | if (chStr.charAt(i) != ' ') {
31 | ch = chStr.charAt(i);
32 | break;
33 | }
34 | }
35 |
36 |
37 | ch = toUppercase(ch);
38 | int count = 0;
39 | for (int i = 0; i < input.length(); i++) {
40 | if (toUppercase(input.charAt(i)) == ch) {
41 | count++;
42 | }
43 | }
44 |
45 | return count;
46 | }
47 |
48 | /**
49 | * 将小写字母变成大写字母
50 | *
51 | * @param ch 输入的字母
52 | * @return 如果输入的是小写就变成大写,否则不变
53 | */
54 | private static char toUppercase(char ch) {
55 | if (ch >= 'a' && ch <= 'z') {
56 | return (char) ('A' + (ch - 'a'));
57 | }
58 |
59 | return ch;
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/089-DNA序列/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2016-01-06 15:18
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | String input = scanner.nextLine();
14 | int n = scanner.nextInt();
15 | System.out.println(maxRatio(input, n));
16 | }
17 |
18 | scanner.close();
19 | }
20 |
21 | /**
22 | * 初始化两个数组,一个序列数值数组K[N],一个序列和数组SUM[N],先遍历一边序列,
23 | * 为C或者G则K[i]为1,否则则置为0,然后计算连续M个K[I]之和存入SUM就行。
24 | *
25 | * @param s
26 | * @param m
27 | * @return
28 | */
29 | private static String maxRatio(String s, int m) {
30 | int[] k = new int[s.length()];
31 | int[] sum = new int[s.length()];
32 | for (int i = 0; i < s.length(); i++) {
33 | char c = s.charAt(i);
34 | if (c == 'C' || c == 'G') {
35 | k[i]++;
36 | }
37 | }
38 |
39 | for (int i = 0; i < k.length - m; i++) {
40 | for (int j = 0; j < m; j++) {
41 | sum[i] += k[i + j];
42 | }
43 | }
44 |
45 | int max = 0;
46 | int idx = 0;
47 | for (int i = 0; i < k.length - 1; i++) {
48 | if (sum[i] > max) {
49 | max = sum[i];
50 | idx = i;
51 | }
52 | }
53 |
54 | return s.substring(idx, idx + m);
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/075-判断两个IP是否属于同一子网/src/readme.txt:
--------------------------------------------------------------------------------
1 | 判断两个IP是否属于同一子网
2 |
3 | 题目描述
4 | 子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。
5 | 子网掩码与IP地址结构相同,是32位二进制数,其中网络号部分全为“1”和主机号部分全为“0”。利用子网掩码可以判断
6 | 两台主机是否中同一子网中。若两台主机的IP地址分别与它们的子网掩码相“与”后的结果相同,则说明这两台主机在同一子网中。
7 |
8 | 示例:
9 | IP地址 192.168.0.1
10 | 子网掩码 255.255.255.0
11 | 转化为二进制进行运算:
12 | IP地址 11010000.10101000.00000000.00000001
13 | 子网掩码 11111111.11111111.11111111.00000000
14 | AND运算
15 | 11000000.10101000.00000000.00000000
16 | 转化为十进制后为:
17 | 192.168.0.0
18 |
19 | IP地址 192.168.0.254
20 | 子网掩码 255.255.255.0
21 | 转化为二进制进行运算:
22 | IP地址 11010000.10101000.00000000.11111110
23 | 子网掩码 11111111.11111111.11111111.00000000
24 | AND运算
25 | 11000000.10101000.00000000.00000000
26 | 转化为十进制后为:
27 | 192.168.0.0
28 |
29 | 通过以上对两台计算机IP地址与子网掩码的AND运算后,我们可以看到它运算结果是一样的。均为192.168.0.0,
30 | 所以这二台计算机可视为是同一子网络。
31 | /**
32 | * 功能: 判断两台计算机IP地址是同一子网络。
33 | * 输入参数: String Mask: 子网掩码,格式:“255.255.255.0”;
34 | * String ip1: 计算机1的IP地址,格式:“192.168.0.254”;
35 | * String ip2: 计算机2的IP地址,格式:“192.168.0.1”;
36 | *
37 | * 返回值:0:IP1与IP2属于同一子网络;
38 | * 1:IP地址或子网掩码格式非法;
39 | * 2:IP1与IP2不属于同一子网络
40 | */
41 | public int checkNetSegment(String mask, String ip1, String ip2) {
42 | /*在这里实现功能*/
43 | return 0;
44 | }
45 |
46 | 输入描述:
47 | 输入子网掩码、两个ip地址
48 |
49 |
50 | 输出描述:
51 | 得到计算结果
52 |
53 | 输入例子:
54 | 255.255.255.0
55 | 192.168.224.256
56 | 192.168.10.4
57 |
58 | 输出例子:
59 | 1
--------------------------------------------------------------------------------
/016-坐标移动/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015/12/22 15:24
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | String input = scanner.nextLine();
14 | System.out.println(move(input));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | private static String move(String input) {
21 | String[] steps = input.split(";");
22 | int[] result = new int[2];
23 |
24 | for (String step : steps) {
25 | move(step, result);
26 | }
27 |
28 |
29 | return result[0] + "," + result[1];
30 | }
31 |
32 | private static void move(String input, int[] result) {
33 |
34 | if (input.matches("(A|D|W|S)[0-9]{1,2}")) {
35 | // 方向
36 | char direction = input.charAt(0);
37 | // 步数
38 | int step = Integer.parseInt(input.substring(1));
39 | switch (direction) {
40 | case 'A':
41 | result[0] -= step;
42 | break;
43 | case 'D':
44 | result[0] += step;
45 | break;
46 | case 'W':
47 | result[1] += step;
48 | break;
49 | case 'S':
50 | result[1] -= step;
51 | break;
52 | }
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/086-密码强度等级/src/readme.txt:
--------------------------------------------------------------------------------
1 | 密码强度等级
2 |
3 | 题目描述
4 | 密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。
5 | 一、密码长度:
6 | 5 分: 小于等于4 个字符
7 | 10 分: 5 到7 字符
8 | 25 分: 大于等于8 个字符
9 | 二、字母:
10 | 0 分: 没有字母
11 | 10 分: 全都是小(大)写字母
12 | 20 分: 大小写混合字母
13 | 三、数字:
14 | 0 分: 没有数字
15 | 10 分: 1 个数字
16 | 20 分: 大于1 个数字
17 | 四、符号:
18 | 0 分: 没有符号
19 | 10 分: 1 个符号
20 | 25 分: 大于1 个符号
21 | 五、奖励:
22 | 2 分: 字母和数字
23 | 3 分: 字母、数字和符号
24 | 5 分: 大小写字母、数字和符号
25 | 最后的评分标准:
26 | >= 90: 非常安全
27 | >= 80: 安全(Secure)
28 | >= 70: 非常强
29 | >= 60: 强(Strong)
30 | >= 50: 一般(Average)
31 | >= 25: 弱(Weak)
32 | >= 0: 非常弱
33 |
34 | 对应输出为:
35 | VERY_WEAK,
36 | WEAK,
37 | AVERAGE,
38 | STRONG,
39 | VERY_STRONG,
40 | SECURE,
41 | VERY_SECURE
42 |
43 | 请根据输入的密码字符串,进行安全评定。
44 | 注:
45 | 字母:a-z, A-Z
46 | 数字:-9
47 | 符号包含如下: (ASCII码表可以在UltraEdit的菜单view->ASCII Table查看)
48 | !"#$%&'()*+,-./ (ASCII码:x21~0x2F)
49 | :;<=>?@ (ASCII<=><=><=><=><=>码:x3A~0x40)
50 | [\]^_` (ASCII码:x5B~0x60)
51 | {|}~ (ASCII码:x7B~0x7E)
52 |
53 | 接口描述:
54 |
55 | Input Param : String pPasswordStr: 密码,以字符串方式存放。
56 | Return Value : 根据规则评定的安全等级。
57 | public static Safelevel GetPwdSecurityLevel(String pPasswordStr) {
58 | /*在这里实现功能*/
59 | return null;
60 | }
61 |
62 | 输入描述:
63 | 输入一个string的密码
64 |
65 | 输出描述:
66 | 输出密码等级
67 |
68 | 输入例子:
69 | 38$@NoNoNo
70 |
71 | 输出例子:
72 | VERY_SECURE
--------------------------------------------------------------------------------
/036-iNOC产品部-杨辉三角的变形/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Arrays;
2 | import java.util.Scanner;
3 |
4 | /**
5 | * Author: 王俊超
6 | * Date: 2015-12-24 16:41
7 | * All Rights Reserved !!!
8 | */
9 | public class Main {
10 | public static void main(String[] args) {
11 | Scanner scanner = new Scanner(System.in);
12 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
13 | while (scanner.hasNext()) {
14 | int input = scanner.nextInt();
15 | System.out.println(findIndex(input));
16 | }
17 |
18 | scanner.close();
19 | }
20 |
21 | private static int findIndex(int n) {
22 | if (n <= 2) {
23 | return -1;
24 | }
25 | int[][] arr = {new int[2 * n - 1], new int[2 * n - 1], new int[2 * n - 1]};
26 |
27 | arr[0][0] = 1;
28 | arr[1][0] = 1;
29 | arr[1][1] = 1;
30 | arr[1][2] = 1;
31 |
32 | for (int i = 2; i < n; i++) {
33 | int curr = i % 3;
34 | int prev = (i - 1) % 3;
35 |
36 | int last = 2 * i; // 最后一个下标
37 |
38 | arr[curr][0] = 1; // 设置第一个值
39 | arr[curr][1] = i; // 设置第二个值
40 | arr[curr][last] = 1; // 设置倒数第一个值
41 | arr[curr][last - 1] = i; // 设置倒数第二个值
42 |
43 | for (int j = 2; j <= last - 2; j++) {
44 | arr[curr][j] = arr[prev][j - 2] + arr[prev][j - 1] + arr[prev][j];
45 | }
46 | }
47 |
48 | int curr = (n - 1) % 3;
49 |
50 | for (int i = 0; i < arr[curr].length; i++) {
51 | if (arr[curr][i] % 2 == 0) {
52 | return i + 1;
53 | }
54 | }
55 |
56 | return -1;
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/042-矩阵乘法/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-24 20:37
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | int x = scanner.nextInt();
14 | int y = scanner.nextInt();
15 | int z = scanner.nextInt();
16 |
17 | int[][] a = new int[x][y];
18 | int[][] b = new int[y][z];
19 |
20 |
21 | for(int i = 0; i < x; i++) {
22 | for (int j = 0; j < y; j++) {
23 | a[i][j] = scanner.nextInt();
24 | }
25 | }
26 |
27 | for(int i = 0; i < y; i++) {
28 | for (int j = 0; j < z; j++) {
29 | b[i][j] = scanner.nextInt();
30 | }
31 | }
32 |
33 |
34 | System.out.println(matrixMultiply(a, b));
35 | }
36 |
37 | scanner.close();
38 | }
39 |
40 | private static String matrixMultiply(int[][] a, int[][] b) {
41 | StringBuilder builder = new StringBuilder();
42 |
43 | for (int i = 0; i < a.length; i++) {
44 | for (int j = 0; j < b[0].length; j++) {
45 | int result = 0;
46 | for (int k = 0; k < a[0].length; k++) {
47 | result += a[i][k] * b[k][j];
48 | }
49 |
50 | builder.append(result).append(' ');
51 | }
52 | builder.setCharAt(builder.length() - 1, '\n');
53 | }
54 |
55 | return builder.substring(0, builder.length() - 1);
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/069-简单错误记录/src/Main2.java:
--------------------------------------------------------------------------------
1 | import java.util.LinkedHashMap;
2 | import java.util.Map;
3 | import java.util.Scanner;
4 |
5 | /**
6 | * TODO 本方案的解决办法与题目有出入
7 | * Author: 王俊超
8 | * Date: 2015-12-28 21:46
9 | * Declaration: All Rights Reserved !!!
10 | */
11 | public class Main2 {
12 | public static void main(String[] args) {
13 | Scanner scanner = new Scanner(System.in);
14 | // Scanner scanner = new Scanner(Main2.class.getClassLoader().getResourceAsStream("data4.txt"));
15 |
16 | LinkedHashMap lru = new LRU<>();
17 |
18 | while (scanner.hasNext()) {
19 | String name = scanner.next();
20 |
21 | int i = name.lastIndexOf("\\");
22 | if (i != -1) {
23 | name = name.substring(i + 1);
24 | if (name.length() > 16) {
25 | name = name.substring(name.length() - 16);
26 | }
27 | }
28 | name += scanner.nextInt();
29 |
30 | if (lru.containsKey(name)) {
31 | lru.put(name, lru.get(name) + 1);
32 | } else {
33 | lru.put(name, 1);
34 | }
35 | }
36 |
37 | scanner.close();
38 |
39 |
40 | StringBuilder builder = new StringBuilder(128);
41 | for (Map.Entry e : lru.entrySet()) {
42 | builder.append(e.getKey()).append(' ').append(e.getValue()).append('\n');
43 | }
44 |
45 | System.out.print(builder.substring(0, builder.length() - 1));
46 | }
47 |
48 | public static class LRU extends LinkedHashMap {
49 | private static final int MAX_ENTRIES = 8;
50 |
51 | @Override
52 | protected boolean removeEldestEntry(Map.Entry eldest) {
53 | return size() > MAX_ENTRIES;
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/074-素数伴侣/src/Main3.java:
--------------------------------------------------------------------------------
1 | import java.util.*;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2016-01-06 12:00
6 | * Declaration: All Rights Reserved !!!
7 | */
8 |
9 |
10 | public class Main3 {
11 |
12 |
13 | public static void main(String[] args) {
14 | Scanner in = new Scanner(Main2.class.getClassLoader().getResourceAsStream("data.txt"));
15 | // Scanner in = new Scanner(System.in);
16 | while (in.hasNextInt()) {
17 | int n = in.nextInt();
18 | int[] arr = new int[n];
19 | int index = 0;
20 | while (index < n) {
21 | arr[index++] = in.nextInt();
22 | }
23 | System.out.println(getBestPrimePartnerCount(arr, n));
24 | }
25 | in.close();
26 | }
27 |
28 | static int getBestPrimePartnerCount(int[] arr, int n) {
29 | if (arr == null || n == 0 || n % 2 != 0) {
30 | return 0;
31 | }
32 | int[] dp = new int[n + 1];
33 |
34 | int cnt = 0;
35 |
36 | for (int i = n - 2; i > -1; i--) {
37 | for (int j = n - 1; j > i; j--) {
38 | cnt = isPrime(arr[i] + arr[j]) ? (dp[i + 1] - dp[j - 1] + dp[j + 1] + 1) : dp[i + 1];
39 | dp[i] = (cnt > dp[i]) ? cnt : dp[i];
40 | }
41 | }
42 |
43 | System.out.println(Arrays.toString(arr));
44 | System.out.println(Arrays.toString(dp));
45 |
46 | return dp[0];
47 | }
48 |
49 | static boolean isPrime(int n) {
50 | if (n == 2) {
51 | return true;
52 | }
53 | boolean isPrime = true;
54 | for (int j = 2; j <= (int) Math.sqrt(n); j++) {
55 | if (n % j == 0) {
56 | isPrime = false;
57 | break;
58 | }
59 | }
60 | return isPrime;
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/052-输入整型数组和排序标识,对其元素按照升序或降序进行排序/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Arrays;
2 | import java.util.Scanner;
3 |
4 | /**
5 | * Author: 王俊超
6 | * Date: 2015-12-27 14:12
7 | * Declaration: All Rights Reserved !!!
8 | */
9 | public class Main {
10 | public static void main(String[] args) {
11 | Scanner scanner = new Scanner(System.in);
12 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
13 | while (scanner.hasNext()) {
14 | int n = scanner.nextInt();
15 | int[] array = new int[n];
16 | for (int i = 0; i < n; i++) {
17 | array[i] = scanner.nextInt();
18 | }
19 | int tag = scanner.nextInt();
20 | System.out.println(arrToStr(sort(array), tag));
21 | }
22 |
23 | scanner.close();
24 | }
25 |
26 | private static String arrToStr(int[] a, int tag) {
27 |
28 | StringBuilder builder = new StringBuilder();
29 |
30 | if (tag == 1) {
31 | for (int i = a.length - 1; i >= 0; i--) {
32 | builder.append(a[i]).append(' ');
33 | }
34 | } else {
35 | for (int i : a) {
36 | builder.append(i).append(' ');
37 | }
38 | }
39 |
40 |
41 | return builder.substring(0, builder.length() - 1);
42 | }
43 |
44 | private static int[] sort(int[] a) {
45 |
46 | for (int i = 0; i < a.length; i++) {
47 | int idx = i;
48 | int tmp;
49 | for (int j = i + 1; j < a.length; j++) {
50 | if (a[idx] - a[j] > 0) {
51 | idx = j;
52 | }
53 | }
54 |
55 | tmp = a[i];
56 | a[i] = a[idx];
57 | a[idx] = tmp;
58 | }
59 |
60 | return a;
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/026-字符串加密/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.HashSet;
2 | import java.util.LinkedHashSet;
3 | import java.util.Scanner;
4 |
5 | /**
6 | * Author: 王俊超
7 | * Date: 2015-12-24 10:19
8 | * Declaration: All Rights Reserved !!!
9 | */
10 | public class Main {
11 | public static void main(String[] args) {
12 | Scanner scanner = new Scanner(System.in);
13 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
14 | while (scanner.hasNext()) {
15 | String s1 = scanner.nextLine();
16 | String s2 = scanner.nextLine();
17 | System.out.println(encrypt(s1, s2));
18 | }
19 |
20 | scanner.close();
21 | }
22 |
23 | private static String encrypt(String mask, String s) {
24 | HashSet set = new LinkedHashSet<>(32);
25 | // 添加掩码中出现了的字母并且除去重复的字母
26 | for (int i = 0; i < mask.length(); i++) {
27 | char c = mask.charAt(i);
28 | if (c >= 'a' && c <= 'z') {
29 | set.add((char) (c - 'a' + 'A'));
30 | } else if (c >= 'A' && c <= 'Z') {
31 | set.add(c);
32 | }
33 | }
34 |
35 | // 添加余下的字母
36 | for (int i = 0; i < 26; i++) {
37 | set.add((char) ('A' + i));
38 | }
39 |
40 | // 转换成字符数组,都是用大写表示的
41 | Character[] convert = set.toArray(new Character[set.size()]);
42 | char[] result = s.toCharArray();
43 |
44 | for (int i = 0; i < result.length; i++) {
45 | char c = result[i];
46 |
47 | if (c >= 'a' && c <= 'z') {
48 | result[i] = (char) (convert[c - 'a'] - 'A' + 'a');
49 | } else if (c >= 'A' && c <= 'Z') {
50 | result[i] = convert[c - 'A'];
51 | }
52 | }
53 |
54 | return new String(result);
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/017-密码验证合格程序/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015/12/22 15:45
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | StringBuilder builder = new StringBuilder();
13 | while (scanner.hasNext()) {
14 | String input = scanner.nextLine();
15 | System.out.println(passwordValidate(input));
16 | }
17 | scanner.close();
18 |
19 | }
20 |
21 | private static String passwordValidate(String input) {
22 | final String OK = "OK";
23 | final String NG = "NG";
24 |
25 | // 长度超过8
26 | if (input == null || input.length() < 9) {
27 | return NG;
28 | }
29 |
30 | int[] kind = new int[4];
31 |
32 | // 统计
33 | for (int i = 0; i < input.length(); i++) {
34 | char ch = input.charAt(i);
35 | if (ch >= 'A' && ch <= 'Z') {
36 | kind[0] |= 1;
37 | } else if (ch >= 'a' && ch <= 'z') {
38 | kind[1] |= 1;
39 | } else if (ch >= '0' && ch <= '9') {
40 | kind[2] |= 1;
41 | } else {
42 | kind[3] |= 1;
43 | }
44 | }
45 |
46 | // 小于三种
47 | if ((kind[0] + kind[1] + kind[2] + kind[3]) < 3) {
48 | return NG;
49 | }
50 |
51 | for (int i = 0; i < input.length() - 3; i++) {
52 | String s1 = input.substring(i, i + 3);
53 | String s2 = input.substring(i + 3, input.length());
54 | if (s2.contains(s1)) {
55 | return NG;
56 | }
57 | }
58 | return OK;
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/033-名字的漂亮度/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.*;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-24 15:26
6 | * All Rights Reserved !!!
7 | */
8 | public class Main {
9 |
10 | public static void main(String[] args) {
11 | Scanner scanner = new Scanner(System.in);
12 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
13 | while (scanner.hasNext()) {
14 | int n = scanner.nextInt();
15 | List list = new ArrayList<>();
16 | while ((--n) >= 0) {
17 | list.add(scanner.next());
18 | }
19 | System.out.print(count(list));
20 | }
21 |
22 | scanner.close();
23 | }
24 |
25 | /**
26 | * 计算字符的最大可能是漂亮度,计算方式为对字符串的数字按出现频率的调到低排序,最高的赋26,下一个赋25,以此类推
27 | *
28 | * @param list
29 | * @return
30 | */
31 | private static String count(List list) {
32 |
33 |
34 | StringBuilder builder = new StringBuilder();
35 |
36 | for (String s : list) {
37 | int result = 0;
38 | int[] seq = new int[26];
39 |
40 | // 统计每个字母出现的次数,不区分大小写
41 | for (int i = 0; i < s.length(); i++) {
42 | char c = s.charAt(i);
43 | // 如果是小写
44 | if (c >= 'a' && c <= 'z') {
45 | seq[c - 'a']++;
46 | }
47 | // 大写
48 | else {
49 | seq[c - 'A']++;
50 | }
51 | }
52 |
53 | // 按出现的次序从小到大排序
54 | Arrays.sort(seq);
55 |
56 | // 计算最大漂亮程度
57 | for (int i = 0; i < seq.length; i++) {
58 | result += seq[i] * (i + 1);
59 | }
60 |
61 |
62 | builder.append(result).append('\n');
63 | }
64 |
65 | return builder.toString();
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/022-删除字符串中出现次数最少的字符/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.*;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-23 11:43
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | String input = scanner.nextLine();
14 | System.out.println(deleteLestWord(input));
15 | }
16 |
17 | scanner.close();
18 | }
19 |
20 | private static String deleteLestWord(String s) {
21 |
22 | Map map = new HashMap<>();
23 | for (int i = 0; i < s.length(); i++) {
24 | char c = s.charAt(i);
25 |
26 | if (map.containsKey(c)) {
27 | map.put(c, map.get(c) + 1);
28 | } else {
29 | map.put(c, 1);
30 | }
31 | }
32 |
33 | int min = Integer.MAX_VALUE;
34 | // 出现的最小的次数
35 | Collection coll = map.values();
36 | for (int i : coll) {
37 | if (i < min) {
38 | min = 1;
39 | }
40 | }
41 |
42 | // 找要删除的字符
43 | Set set = new HashSet<>();
44 | Set> entries = map.entrySet();
45 | for (Map.Entry e: entries) {
46 | if (e.getValue() == min) {
47 | set.add(e.getKey());
48 | }
49 | }
50 |
51 | StringBuilder builder = new StringBuilder();
52 |
53 | // 删除字符
54 | for (int i = 0; i < s.length(); i++) {
55 | char c = s.charAt(i);
56 | if (!set.contains(c)) {
57 | builder.append(c);
58 | }
59 | }
60 | return builder.toString();
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/069-简单错误记录/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.ArrayList;
2 | import java.util.Scanner;
3 |
4 | /**
5 | * Author: 王俊超
6 | * Time: 2016-04-24 13:28
7 | * CSDN: http://blog.csdn.net/derrantcm
8 | * Github: https://github.com/Wang-Jun-Chao
9 | * Declaration: All Rights Reserved !!!
10 | */
11 | public class Main {
12 | private static class Error {
13 | private String name;
14 | private int line;
15 | private int count;
16 |
17 | @Override
18 | public String toString() {
19 | return name + " " + line + " " + count;
20 | }
21 | }
22 |
23 | public static void main(String[] args) {
24 | Scanner input = new Scanner(System.in);
25 |
26 | ArrayList errors = new ArrayList<>();
27 | while (input.hasNext()) {
28 | String name = input.next();
29 | int num = input.nextInt();
30 | Error record = new Error();
31 | name = name.substring(name.lastIndexOf("\\") + 1);
32 | if (name.length() > 16) {
33 | name = name.substring(name.length() - 16);
34 | }
35 |
36 | boolean flag = true;
37 | //重复检验
38 | for (Error error : errors) {
39 | if (name.equals(error.name) && num == error.line) {
40 | error.count++;
41 | flag = false;
42 | }
43 | }
44 | //表示为新Record
45 | if (flag) {
46 | record.name = name;
47 | record.line = num;
48 | record.count = 1;
49 | errors.add(record);
50 | }
51 | }
52 | input.close();
53 | //最多纪录8条错误纪录
54 | int j = 0;
55 | if (errors.size() > 8){
56 | j = errors.size() - 8;
57 | }
58 | for (; j < errors.size(); j++) {
59 | System.out.println(errors.get(j));
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/074-素数伴侣/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Arrays;
2 | import java.util.Scanner;
3 |
4 | /**
5 | * Author: 王俊超
6 | * Date: 2016-01-06 10:43
7 | * Declaration: All Rights Reserved !!!
8 | */
9 | public class Main {
10 | public static void main(String[] args) {
11 | Scanner scanner = new Scanner(System.in);
12 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
13 | while (scanner.hasNext()) {
14 | int n = scanner.nextInt();
15 | int[] arr = new int[n];
16 | for (int i = 0; i < n; i++) {
17 | arr[i] = scanner.nextInt();
18 | }
19 |
20 | System.out.println(countPrimePairs(arr));
21 | }
22 |
23 | scanner.close();
24 | }
25 |
26 |
27 | private static boolean isPrime(int n) {
28 | if (n < 2) {
29 | return false;
30 | }
31 |
32 | int sqrt = (int) Math.sqrt(n);
33 | for (int i = 2; i <= sqrt; i++) {
34 | if (n % i == 0) {
35 | return false;
36 | }
37 | }
38 |
39 | return true;
40 | }
41 |
42 | /**
43 | * 从后向前看
44 | * 利用动态规划解题,dp[i]表示(n-1)~i最多有的伴侣数;
45 | * 当v[i]+v[j]为素数。dp[i]+dp[j+1] = dp[i+1]+dp[j+1]+1;
46 | * 由于伴侣数成对出现,必然只能在i-1和j-1的基础上出现一对。
47 | * 当v[i]+v[j]不为素数。dp[i]=dp[i+1]
48 | *
49 | * @param v
50 | * @return
51 | */
52 | private static int countPrimePairs(int[] v) {
53 |
54 | int[] dp = new int[v.length + 1];
55 |
56 | for (int i = v.length - 2; i > -1; i--) {
57 | for (int j = v.length - 1; j > i; j--) {
58 | int cnt = isPrime(v[i] + v[j]) ? (dp[i + 1] - dp[j - 1] + dp[j + 1] + 1) : dp[i + 1];
59 | dp[i] = (cnt > dp[i]) ? cnt : dp[i];
60 | }
61 | }
62 |
63 | // System.out.println(Arrays.toString(v));
64 | // System.out.println(Arrays.toString(dp));
65 |
66 | return dp[0];
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/073-查找兄弟单词/src/Main2.java:
--------------------------------------------------------------------------------
1 | import java.util.ArrayList;
2 | import java.util.Collections;
3 | import java.util.Scanner;
4 |
5 | /**
6 | * Author: 王俊超
7 | * Date: 2016-01-05 16:16
8 | * All Rights Reserved !!!
9 | */
10 | public class Main2 {
11 | public static void main(String[] args) {
12 | // Scanner sc = new Scanner(System.in);
13 | Scanner sc = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
14 | while (sc.hasNext()) {
15 | int n = sc.nextInt();
16 | String[] input = new String[n];
17 | for (int i = 0; i < n; i++) {
18 | input[i] = sc.next();
19 | }
20 | String rs = "";
21 | String goal = sc.next();
22 | int m = sc.nextInt();
23 | int count = 0;
24 | ArrayList arrayList = new ArrayList();
25 | for (int i = 0; i < input.length; i++) {
26 | if (input[i].length() == goal.length() && !input[i].equals(goal)) {
27 | if (Equle(input[i], goal)) {
28 | count++;
29 | arrayList.add(input[i]);
30 | }
31 | }
32 | }
33 | Collections.sort(arrayList);
34 |
35 | System.out.println(arrayList);
36 |
37 | System.out.println(count);
38 | if (arrayList.size() >= m) {
39 | System.out.println(arrayList.get(m - 1));
40 | }
41 | }
42 | }
43 |
44 | public static boolean Equle(String strA, String StrB) {
45 | int[] A = new int[26];
46 | int[] B = new int[26];
47 | for (int i = 0; i < strA.length(); i++) {
48 | A[strA.charAt(i) - 'a']++;
49 | B[StrB.charAt(i) - 'a']++;
50 | }
51 | for (int i = 0; i < A.length; i++) {
52 | if (A[i] != B[i]) {
53 | return false;
54 | }
55 | }
56 | return true;
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/085-记负均正/src/data.txt:
--------------------------------------------------------------------------------
1 | 5
2 | 1
3 | 2
4 | 3
5 | 4
6 | 5
7 | 503 -95 35 16 287 -11 -130 90 272 159 166 293 196 -235 -101 133 -5 189 119 -37 102 311 11 185 326 14 -252 22 263 -16 -58 127 -61 -283 -97 275 258 -261 -160 79 131 56 250 90 106 295 -244 -41 305 102 -137 209 -70 126 -250 231 68 -110 109 231 10 126 -231 -187 58 169 21 -35 -130 -296 -216 250 301 216 -11 -208 -295 230 -225 -269 -73 -38 299 289 -229 -8 -73 90 -99 -114 -24 324 -62 -85 -215 -167 26 -178 56 -77 191 -215 -180 -294 -204 21 136 8 86 179 121 164 47 -208 56 189 -106 -247 96 -50 -51 318 159 -85 61 285 -270 -171 161 161 192 -177 -106 17 -269 -142 -74 -262 -152 310 -31 160 235 322 -51 -164 163 -206 223 132 315 175 -182 310 60 -289 239 94 217 248 -67 312 234 188 158 196 196 186 -75 20 -287 284 -216 -81 -107 226 -219 -56 102 255 -121 -15 -111 -86 255 229 -235 -178 -24 -108 9 222 -26 -202 76 -57 227 -105 71 -117 -198 23 -86 272 222 281 288 229 181 162 294 -85 79 125 -155 213 -118 192 -110 59 -9 181 101 314 -257 -33 -283 -161 305 175 228 212 195 63 141 -40 69 187 -276 61 -169 82 193 -270 164 290 -237 -195 134 218 217 210 -96 -253 94 -11 -222 -289 176 -184 -155 -21 295 42 -95 200 208 156 185 192 -7 24 242 -27 281 -296 -179 -193 -127 -297 215 -245 102 165 -159 -162 223 281 -245 -266 185 -193 -12 97 174 -36 -294 -248 130 281 -150 177 57 138 -51 -273 -233 -206 -219 -187 -298 153 -240 13 304 35 -20 105 136 326 -15 -48 -105 66 -291 313 -202 -58 -249 -188 231 143 -45 114 251 -106 -117 -271 171 67 -182 -86 -278 53 -259 -68 -185 -15 134 160 -104 37 240 32 -220 -109 240 -153 -31 313 219 -43 184 279 64 40 230 38 -185 280 210 32 37 250 270 191 -2 13 -79 -251 -298 -236 129 -249 -88 46 -5 -114 -292 128 33 138 71 327 -236 114 157 274 -196 194 134 167 -47 -113 74 66 -164 292 -237 247 -161 -132 -83 55 123 166 184 -2 38 172 164 277 -45 -92 -69 182 -101 5 -118 -231 -256 195 88 47 211 174 -97 213 250 175 112 294 40 177 -161 -217 250 152 -199 314 -277 292 -174 -34 175 76 251 147 -129 321 -257 -97 268 149 -218 -223 -286 -129 128 29 222 -69 270 -165 -118 182 -24 -13 15 -11 124 310 267 317 124 -281 -162 246 73 -29 -18 165 20 229 -34 -177 253 88 304 323 53 -165 187 -76
--------------------------------------------------------------------------------
/082-字符串通配符/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.Scanner;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2016-01-04 09:13
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | String reg = scanner.nextLine();
14 | String str = scanner.nextLine();
15 |
16 | System.out.println(match(reg, str));
17 | }
18 |
19 | scanner.close();
20 | }
21 |
22 | private static boolean match(String reg, String str) {
23 | return match(reg, 0, str, 0);
24 | }
25 |
26 | private static boolean match(String reg, int i, String str, int j) {
27 |
28 | // 正则式已经到达末尾了
29 | if (i >= reg.length()) {
30 | return j >= str.length();
31 | }
32 |
33 | // 匹配串已经到达末尾了
34 | if (j >= str.length()) {
35 | return i >= str.length();
36 | }
37 |
38 | // 两个都没有到末尾
39 | boolean result = false;
40 | switch (reg.charAt(i)) {
41 | case '*':
42 | // 匹配一个字符
43 | result = match(reg, i, str, j + 1);
44 | if (result) {
45 | return true;
46 | }
47 | // 不匹配字符
48 | result = match(reg, i + 1, str, j);
49 |
50 | if (result) {
51 | return true;
52 | }
53 |
54 | // 只匹配一个字符
55 | result = match(reg, i + 1, str, j + 1);
56 |
57 | break;
58 | case '?':
59 | result = match(reg, i + 1, str, j + 1);
60 | break;
61 | default:
62 | if (reg.charAt(i) == str.charAt(j)) {
63 | result = match(reg, i + 1, str, j + 1);
64 | }
65 | }
66 |
67 |
68 | return result;
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/074-素数伴侣/src/Main2.java:
--------------------------------------------------------------------------------
1 | import java.util.Arrays;
2 | import java.util.Scanner;
3 |
4 | /**
5 | * Author: 王俊超
6 | * Date: 2016-01-06 10:43
7 | * Declaration: All Rights Reserved !!!
8 | */
9 | public class Main2 {
10 | public static void main(String[] args) {
11 | // Scanner scanner = new Scanner(System.in);
12 | Scanner scanner = new Scanner(Main2.class.getClassLoader().getResourceAsStream("data.txt"));
13 | while (scanner.hasNext()) {
14 | int n = scanner.nextInt();
15 | int[] arr = new int[n];
16 | for (int i = 0; i < n; i++) {
17 | arr[i] = scanner.nextInt();
18 | }
19 |
20 | System.out.println(countPrimePairs(arr));
21 | }
22 |
23 | scanner.close();
24 | }
25 |
26 |
27 | private static boolean isPrime(int n) {
28 | if (n < 2) {
29 | return false;
30 | }
31 |
32 | int sqrt = (int) Math.sqrt(n);
33 | for (int i = 2; i < sqrt; i++) {
34 | if (n % i == 0) {
35 | return false;
36 | }
37 | }
38 |
39 | return true;
40 | }
41 |
42 | /**
43 | * 利用动态规划解题,dp[i]表示0-i最多有的伴侣数;
44 | * 当v[i]+v[j]为素数。dp[i]+dp[j] = dp[i-1]+dp[j-1]+1;
45 | * 由于伴侣数成对出现,必然只能在i-1和j-1的基础上出现一对。
46 | * 当v[i]+v[j]不为素数。dp[i]=dp[i-1]
47 | *
48 | * @param v
49 | * @return
50 | */
51 | private static int countPrimePairs(int[] v) {
52 | if (v == null || v.length == 0 || v.length % 2 != 0) {
53 | return 0;
54 | }
55 | int[] dp = new int[v.length + 1];
56 |
57 | int cnt = 0;
58 |
59 | for (int i = v.length - 2; i > -1; i--) {
60 | for (int j = v.length - 1; j > i; j--) {
61 | cnt = isPrime(v[i] + v[j]) ? (dp[i + 1] - dp[j - 1] + dp[j + 1] + 1) : dp[i + 1];
62 | dp[i] = (cnt > dp[i]) ? cnt : dp[i];
63 | }
64 | }
65 |
66 | System.out.println(Arrays.toString(v));
67 | System.out.println(Arrays.toString(dp));
68 | return dp[0];
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/035-输出单向链表中倒数第k个结点/src/Main.java:
--------------------------------------------------------------------------------
1 | import org.omg.SendingContext.RunTime;
2 |
3 | import java.util.List;
4 | import java.util.Scanner;
5 |
6 | /**
7 | * Author: 王俊超
8 | * Date: 2015-12-24 16:10
9 | * All Rights Reserved !!!
10 | */
11 | public class Main {
12 | public static void main(String[] args) {
13 | Scanner scanner = new Scanner(System.in);
14 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
15 | while (scanner.hasNext()) {
16 | int n = scanner.nextInt();
17 | ListNode head = new ListNode(0);
18 | ListNode prev = head;
19 | while ((--n) >= 0) {
20 | prev.next = new ListNode(scanner.nextInt());
21 | prev = prev.next;
22 | }
23 | int k = scanner.nextInt();
24 |
25 | System.out.println(findKthToTail(head, k));
26 | }
27 |
28 | scanner.close();
29 | }
30 |
31 | /**
32 | * 找倒数第k个结点,假设k是有效的
33 | *
34 | * @param head
35 | * @param k
36 | * @return
37 | */
38 | private static ListNode findKthToTail(ListNode head, int k) {
39 |
40 | ListNode prev = head;
41 |
42 | while (--k >= 0 && prev != null) {
43 | prev = prev.next;
44 | }
45 |
46 | // 说明k已经超出了链表的长度
47 | if (prev == null) {
48 | throw new RuntimeException("k=" + k + "不合法");
49 | }
50 |
51 | // 注释掉的才是正确答案
52 | // while (prev != null) {
53 | // prev = prev.next;
54 | // head = head.next;
55 | // }
56 |
57 | // 如果从0开始,即链表尾部第一个是倒数第0个那么下面是正确的
58 | while (prev.next != null) {
59 | prev = prev.next;
60 | head = head.next;
61 | }
62 |
63 | return head;
64 | }
65 |
66 |
67 | private static class ListNode {
68 | int v;
69 | ListNode next;
70 |
71 | ListNode(int v) {
72 | this.v = v;
73 | }
74 |
75 | @Override
76 | public String toString() {
77 | return "" + v;
78 | }
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/046-成绩排序/src/Main.java:
--------------------------------------------------------------------------------
1 | import java.util.*;
2 |
3 | /**
4 | * Author: 王俊超
5 | * Date: 2015-12-24 22:13
6 | * Declaration: All Rights Reserved !!!
7 | */
8 | public class Main {
9 | public static void main(String[] args) {
10 | Scanner scanner = new Scanner(System.in);
11 | // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
12 | while (scanner.hasNext()) {
13 | int n = scanner.nextInt();
14 | int t = scanner.nextInt();
15 |
16 | Student[] students = new Student[n];
17 |
18 | for (int i = 0; i < n; i++) {
19 | String name = scanner.next().trim();
20 | int score = scanner.nextInt();
21 | students[i] = new Student(name, score);
22 | }
23 |
24 |
25 | sort(t, students);
26 |
27 | StringBuilder builder = new StringBuilder();
28 | for (Student s : students) {
29 | builder.append(s.name).append(" ").append(s.score).append('\n');
30 | }
31 |
32 | System.out.print(builder.toString());
33 | }
34 |
35 | scanner.close();
36 | }
37 |
38 | private static void sort(int t, Main.Student[] students) {
39 | if (t == 1) {
40 | Arrays.sort(students, new Comparator() {
41 | @Override
42 | public int compare(Main.Student s, Main.Student t) {
43 | return s.score - t.score;
44 | }
45 | });
46 | } else if (t == 0) {
47 | Arrays.sort(students, new Comparator() {
48 | @Override
49 | public int compare(Main.Student s, Main.Student t) {
50 | return t.score - s.score;
51 | }
52 | });
53 | }
54 | }
55 |
56 | private static class Student {
57 | private String name;
58 | private int score;
59 |
60 | public Student(String name, int score) {
61 | this.name = name;
62 | this.score = score;
63 | }
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/038-输入n个整数,输出其中最小的k个/src/data.txt:
--------------------------------------------------------------------------------
1 | 445 237 1886 8470 3020 7940 5617 9627 3976 3571 9176 9248 812 2909 4788 1521 562 8325 8829 8196 5615 4498 9185 8421 5297 5511 6334 6030 5302 186 5106 5213 8195 4412 1927 6359 7245 1462 5080 6318 1649 980 3159 3768 8958 6946 5940 5976 8717 8176 3367 8574 1024 6103 782 8300 1511 3183 5259 6038 8416 9249 5163 9586 2434 3193 6288 276 1210 4124 598 3951 7678 5128 5277 8355 1873 48 2256 8683 725 6527 6969 195 3762 2132 2946 4260 5115 6412 1773 1833 9128 4907 6496 316 1876 1831 9252 1193 8247 5626 612 9081 3606 6590 6543 9363 7310 3631 5962 3758 8372 3472 4062 5962 2522 5853 7124 2323 7753 2893 4350 6510 6543 3817 9310 4503 554 9473 8672 17 2075 4808 277 6389 4177 3296 6018 2916 1281 5486 252 2 8951 1476 1899 2587 6967 3611 451 4886 3243 3974 7765 7454 2356 4831 454 64 1454 3486 6272 6418 8060 5435 4396 4762 6668 2422 8690 6720 416 9484 28 8798 5546 7566 1733 3916 6448 4430 7476 6442 355 8329 1645 3491 1002 4086 254 227 3520 2517 2237 7972 4782 2606 9021 1518 8945 6761 7920 3227 3743 3973 7354 3444 6914 3397 8893 8604 2824 2421 8610 7500 939 1263 1496 4443 4874 9248 2150 5980 8295 6449 735 7849 8553 5551 6906 8074 9224 2990 265 5396 7314 2982 6576 4326 8817 2811 9358 1672 577 6297 9475 7671 2185 2928 8084 3801 292 3069 7479 8979 5312 3717 4241 2764 4003 6839 358 3437 6240 6647 8952 5455 7540 7312 742 6201 6147 926 9028 1281 8855 1549 3540 9144 3218 8318 6024 5031 9025 4055 8392 8602 4421 4600 19 1035 3864 6954 5162 8848 6216 3331 3388 6669 7760 50 4014 1920 2536 7554 2528 7450 7299 2241 7769 7603 6613 1790 5325 5276 6609 9476 3994 2985 3293 5493 3310 3497 2329 6159 3969 7391 5920 8409 8181 2431 5930 5713 9087 8389 9112 9252 6488 6831 2496 2338 6568 5861 8308 2168 5319 3691 1350 5383 6629 7243 5147 9587 1106 116 4374 7730 4597 7695 9433 4467 5367 5602 5102 89 4012 7802 3193 2900 7399 811 8391 1288 8704 3647 6900 4343 8478 55 5218 8716 7361 1859 4340 9548 6010 7719 3280 9453 387 4849 2840 3029 7307 7147 8684 8819 2577 2584 2871 7011 4299 4134 9600 8196 1371 9161 4305 4095 4457 8408 3663 9111 8473 3176 7235 9333 7948 5503 1866 2771 4411 313 5972 5359 8919 5368 4315 2937 9061 4467 2989 8520 434 7667 5337 6394 4737 4873 4324 6764 6341 6722 5710 9403 3241
--------------------------------------------------------------------------------