算法复习15
程序员文章站
2022-03-31 14:53:02
...
左旋转字符串
对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。
采用移动多少位,就截取多少位到最后拼接的方法。
public class Solution {
public String LeftRotateString(String str,int n) {
if(str.length()==0||n<0){
return "";
}
StringBuffer sb=new StringBuffer(str.substring(0,n));
StringBuffer sb1=new StringBuffer(str.substring(n,str.length()));
sb1.append(sb);
return sb1.toString();
}
}
翻转单词顺序列
将字符串分割,按反序添加入StringBuilder,将StringBuilder转为String返回即可。
public class Solution {
public String ReverseSentence(String str) {
if(str == null){ return null;}
if(str.trim().equals("")){
return str;
}
String string = str;
String[] strings = string.split(" ");
StringBuilder sBuilder = new StringBuilder();
for (int i = strings.length-1 ; i>=0;i--) {
if(i == 0){
sBuilder.append(strings[i]);
}else {
sBuilder.append(strings[i]);
sBuilder.append(" ");
}
}
String string2 = sBuilder.toString();
return string2;
}
}
扑克牌顺子
随机从牌中抽出了5张牌,大\小王可以看成任何数字,并且A看作1,J为11,Q为12,K为13;抽到顺子,返回true;否则,返回false。
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public boolean isContinuous(int [] numbers) {
if(numbers == null || numbers.length == 0 || numbers.length > 5){
return false;
}
ArrayList<Integer> al = new ArrayList<>();
int len = numbers.length;
int count = 0;
for(int i = 0; i < len; i++){
if(0 == numbers[i]){
count++;
}else{
al.add(numbers[i]);
}
}
Collections.sort(al);
int len1 = al.size();
if(Math.abs(al.get(0) - al.get(len1 - 1)) > 4){
return false;
}
for(int i = 0; i < len1 - 1; i++){
int temp = al.get(i + 1) - al.get(i);
if(0 < temp && temp < 5){
continue;
}else{
return false;
}
}
return true;
}
}
上一篇: 利用matplotlib画函数图像
推荐阅读
-
PHP 数据结构 算法 三元组 Triplet_php技巧
-
前端笔记之React(四)生命周期&Virtual DOM和Diff算法&日历组件开发
-
算法小抄学习笔记 — 8.二叉树的遍历
-
多媒体视频开发_(15) FFMPEG使用NVIDIA的GPU硬件转码
-
【C++深度剖析教程15】经典问题解析之关于string的疑问
-
PHP两种快速排序算法实例_php实例
-
浅谈算法之最小生成树Kruskal的Python实现
-
JS---DOM---part4 课程介绍 & part3 复习
-
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
-
算法测试自定义-函数指针【数据结构与算法笔记5】