179. Largest Number

冒泡排序,每一轮都把最小的数字选出放在最后。

class Solution {
public String largestNumber(int[] nums) {
for(int i = 0; i < nums.length; i++){
for(int j = 0; j < nums.length - i - 1; j++){
String s1 = nums[j] + "" + nums[j + 1];
String s2 = nums[j + 1] + "" + nums[j];
if(s1.compareTo(s2) < 0){
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
String res = "";
for(int i = 0; i < nums.length; i++){
res += nums[i];
}
if(res.charAt(0) == '0'){
return "0";
}
return res;
}
}

第二种,重写compare

public class Solution {
public String largestNumber(int[] num) {
if(num == null || num.length == 0)
return ""; // Convert int array to String array, so we can sort later on
String[] s_num = new String[num.length];
for(int i = 0; i < num.length; i++)
s_num[i] = String.valueOf(num[i]); // Comparator to decide which string should come first in concatenation
Comparator<String> comp = new Comparator<String>(){
@Override
public int compare(String str1, String str2){
String s1 = str1 + str2;
String s2 = str2 + str1;
return s2.compareTo(s1); // reverse order here, so we can do append() later
}
}; Arrays.sort(s_num, comp);
// An extreme edge case by lc, say you have only a bunch of 0 in your int array
if(s_num[0].charAt(0) == '0')
return "0"; StringBuilder sb = new StringBuilder();
for(String s: s_num)
sb.append(s); return sb.toString(); }
}

6. ZigZag Conversion

之字形走法,先用一个for添加从顶到底的char,第二个for添加斜向上的元素(不包括第一行sb[ 0 ],故用 i >= 1表示),依次类推。最后将所有sb [ i ] 依次添加到sb[ 0 ]的后面。记得 sb.toString( )。

class Solution {
public String convert(String s, int numRows) {
char[] c = s.toCharArray();
int len = c.length;
StringBuilder[] sb = new StringBuilder[numRows];
for(int i = 0; i < numRows; i++){
sb[i] = new StringBuilder();
} int idx = 0;
while(idx < len){
for(int i = 0; i < numRows && idx < len; i++){
sb[i].append(c[idx++]);
}
for(int i = numRows - 2; i >= 1 && idx < len; i--){
sb[i].append(c[idx++]);
}
}
for(int i = 1; i < sb.length; i++){
sb[0].append(sb[i]);
}
return sb[0].toString();
}
}

168. Excel Sheet Column Title

相当于转化为26进制。先减1 % 26取最小位。再减去余数继续除以26计算更高位。

class Solution {
public String convertToTitle(int n) {
StringBuilder sb = new StringBuilder();
int reminder = 0;
while(n > 0){
reminder = (n - 1) % 26;
sb.insert(0, (char)(reminder + 'A'));
n = (n - reminder) / 26;
}
return sb.toString();
}
}

最新文章

  1. linux 学习1
  2. Sublime Text3 (转) 配置 以及快捷键配置
  3. 【阿炬Android笔记】01、调用VitamioBundle播放窗口
  4. Eclipse代码追踪功能说明
  5. SQL Server 查询表的记录数(3种方法,推荐第一种)
  6. jsp页面el表达式不起作用
  7. Git:代码冲突常见解决方法
  8. Spark Tungsten揭秘 Day4 内存和CPU优化使用
  9. Java 内存模型- Java Memory Model
  10. Actor-ES框架:Ray
  11. nodejs http小爬虫
  12. 分布式系统监视zabbix讲解十一之zabbix升级--技术流ken
  13. 修改Windows默认远程端口号
  14. zzw原创_Red Hat Enterprise Linux Server release 6.5 安装mysql5.5.28版本
  15. Uboot代码分析
  16. ABAP开发需要养成的习惯—处理规范,日期,sort,改结构
  17. b2c项目访问
  18. Web网站错误提示页面和默认訪问页面设置
  19. C# 通用方法
  20. 计算机网络的服务质量(QoS)

热门文章

  1. Vue 监听键盘,键盘修饰符keyup
  2. Nginx与keepalived实现高可用
  3. C#开发BIMFACE系列15 服务端API之获取模型的View token
  4. vscode源码分析【五】事件分发机制
  5. HTTP系列之Referer和Referrer policy简介
  6. IDA+Windbg IDA+OD 连动调试插件
  7. C#使用Emgu CV来进行图片人脸检测
  8. python3的reload(sys)
  9. 用Python复制文件的9个方法
  10. E203数据冲突处理OITF