
算法
文章平均质量分 60
Country Programmer
无人问津的日子里,认真沉淀自己
展开
-
压缩字符串
一、问题描述 给定一个字符串进行压缩 例如:(1)输入:aaabbccccaa 输出:a3b2c4a2 (2)输入:aabbcde 输出:aabbcde 这个压缩后是a2b2c1d1e1,它的长度大于压缩之前的,所以就输出压缩之前的字符串。 二、思路 这里用栈来模拟这个过程:栈中没有元素或者栈顶元素和当前元素相等,就入栈;否则就把栈中元素个数记录下来,再把栈顶元素和元素个数拼接,清空栈。 三、代码 public class Solution { public static void main(Str原创 2021-03-26 18:44:35 · 413 阅读 · 0 评论 -
字符串最长升序子序列
一、题目描述 给定一个字符串(只包含纯大写字母或者小写字母),在这个字符串中找出最长的升序子序列。 例如: 输入:abcdeababca 输出:abcde 二、解法 这个思路是面试官给的:遍历这个字符串,先把所有的升序子字符串放进链表中,最后遍历链表,找出最小的。 三、代码 public class MaxSort { public static void main(String[] args) { Scanner sc=new Scanner(System.in);原创 2021-03-26 17:36:42 · 835 阅读 · 0 评论 -
排序算法(2)
一、快速排序 代码实现: //快速排序 public static void fastSort(int[] arr){ //1、选取基准值 //2、让left从左往右找比基准值大的,right从右向左找比基准值小的 //3、再针对两个区间递归的进行之前的操作 quickHelper(arr,0,arr.length-1); } public static void quickHelper(int[] arr, int原创 2020-08-08 12:49:39 · 854 阅读 · 0 评论 -
排序算法(1)
一、直接插入排序 //直接插入排序 public static void insert(int[] arr) { for (int bound = 1; bound < arr.length; bound++) { //把bound位置的元素保存下来,插到前面已经排好序的区间 int tmp = arr[bound]; int j=bound-1; for (; j >=0;原创 2020-08-07 20:44:32 · 241 阅读 · 0 评论