总结
这份面试题几乎包含了他在一年内遇到的所有面试题以及答案,甚至包括面试中的细节对话以及语录,可谓是细节到极致,甚至简历优化和怎么投简历更容易得到面试机会也包括在内!也包括教你怎么去获得一些大厂,比如阿里,腾讯的内推名额!
某位名人说过成功是靠99%的汗水和1%的机遇得到的,而你想获得那1%的机遇你首先就得付出99%的汗水!你只有朝着你的目标一步一步坚持不懈的走下去你才能有机会获得成功!
成功只会留给那些有准备的人!
-
@ClassName: ReorganizeString
-
@Description: 重构字符串
-
@Author: 牛哄哄的柯南
-
@Date: 2020/11/30 19:57
**/
public class ReorganizeString {
/*给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同。
若可行,输出任意可行的结果。若不可行,返回空字符串。*/
public static void main(String[] args) {
Solution solution = new Solution();
String str = “aaaabbbccdef”;
String re = solution.reorganizeString(str);
System.out.println(re);
}
}
class Solution {
public String reorganizeString(String S) {
//把S转为字符数组
char[] ss = S.toCharArray();
//长度
int length = S.length();
//统计每个字符出现的次数
int[] counts = new int[26];
// 结果数组
char[] result = new char[length];
//统计每个字符出现的次数
for (int i = 0; i < length; i++) {
counts[ss[i] - ‘a’]++;
}
int maxx = 0, theMostFrequentCharacter = 0, maximumNumber = (length + 1) >> 1;
// theMostFrequentCharacter 出现次数最多的字符
//找出出现次数最多的那个字符
for (int i = 0; i < counts.length; i++) {
if (counts[i] > maxx) {
maxx = counts[i];
theMostFrequentCharacter = i;
if (maxx > maximumNumber) {
return “”;
}
}
}
int index = 0;
//先把出现次数最多的字符从0开始放到偶数位
while (counts[theMostFrequentCharacter]-- > 0) {
result[index] = (char) (theMostFrequentCharacter + ‘a’);
index += 2;
}
//把剩下的放到其他位置
for (int i = 0; i < counts.length; i++) {
while (counts[i]-- > 0) {
if (index >= result.length) {
index = 1;
}
result[index] = (char) (i + ‘a’);
index += 2;
}
}
return new String(result);
}
}
最后
文章中涉及到的知识点我都已经整理成了资料,录制了视频供大家下载学习,诚意满满,希望可以帮助在这个行业发展的朋友,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我把这些资料,分享出来。相信对于已经工作和遇到技术瓶颈的朋友们,在这份资料中一定都有你需要的内容。
+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**