最新重构字符串Java版(力扣),程序员Java教程

总结

这份面试题几乎包含了他在一年内遇到的所有面试题以及答案,甚至包括面试中的细节对话以及语录,可谓是细节到极致,甚至简历优化和怎么投简历更容易得到面试机会也包括在内!也包括教你怎么去获得一些大厂,比如阿里,腾讯的内推名额!

某位名人说过成功是靠99%的汗水和1%的机遇得到的,而你想获得那1%的机遇你首先就得付出99%的汗水!你只有朝着你的目标一步一步坚持不懈的走下去你才能有机会获得成功!

成功只会留给那些有准备的人!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • @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);

}

}

最后

文章中涉及到的知识点我都已经整理成了资料,录制了视频供大家下载学习,诚意满满,希望可以帮助在这个行业发展的朋友,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我把这些资料,分享出来。相信对于已经工作和遇到技术瓶颈的朋友们,在这份资料中一定都有你需要的内容。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

需要这份系统化的资料的朋友,可以点击这里获取

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值