算法
崖石
这个作者很懒,什么都没留下…
展开
-
链表中倒数第k个结点 输入一个链表,输出该链表中倒数第k个结点。
输入一个链表,输出该链表中倒数第k个结点。package 链表;public class Solution { public static void main(String[] args) { ListNode head1=new ListNode(1); ListNode head2=new ListNode(2); ListNode head3=ne原创 2017-11-28 17:54:39 · 437 阅读 · 0 评论 -
空格替换 请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。 给定一
public static String replaceSpace(String iniString, int length) { char str[] =iniString.toCharArray(); char[] strR=new char[str.length+str.length*3]; String s=""; for(int i=0;i if(str原创 2017-11-24 23:17:27 · 1622 阅读 · 0 评论 -
确定字符互异 确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代
public static boolean checkDifferent(String iniString) { char[] strs=iniString.toCharArray(); if(strs.length!=0){ for(int i=0;i for(int j=i+1;j if(strs[i]==strs[j]){ return原创 2017-11-24 21:09:12 · 449 阅读 · 0 评论 -
确定两串乱序同构 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。 给定一个string stringA和一个
public static boolean checkSam(String stringA, String stringB) { char[] strA=stringA.toCharArray(); char[] strB=stringB.toCharArray(); ListCharacter> listB=new ArrayList for(int i=0;i listB.add(st原创 2017-11-24 22:46:55 · 381 阅读 · 0 评论 -
原串翻转 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。 给定一个string iniString,请返回一个string,为翻转后的字符串
public static String reverseString(String iniString) { char[] strs=iniString.toCharArray(); String result=""; if(strs.length!=0){ for(int i=strs.length-1;i>-1;i--){ result+=strs[i];原创 2017-11-24 21:29:01 · 642 阅读 · 0 评论 -
回文链表 请编写一个函数,检查链表是否为回文。 给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。 测试样例: {1,2,3,2,1} 返回:true {1,2,3,
请编写一个函数,检查链表是否为回文。给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。测试样例:{1,2,3,2,1}返回:true{1,2,3,2,3}返回:false/*public class ListNode { int val; L原创 2017-12-03 11:48:00 · 577 阅读 · 0 评论 -
用两个栈实现队列 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型package 栈;import java.util.Stack;public class Solution { Stack stack1 = new Stack(); Stack stack2 = new Stack(); public void push(i原创 2017-12-11 14:50:22 · 344 阅读 · 0 评论 -
链式A+B有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。 给定两个链表ListNode* A,ListN
有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。测试样例:{1,2,3},{3,2,1}返回:{4,4,4}package 链表原创 2017-12-02 13:58:55 · 951 阅读 · 0 评论 -
链表分割 编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以
编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。/*public class ListNode { int val; ListNode next = null; ListNode(int v原创 2017-11-29 21:52:17 · 1493 阅读 · 0 评论 -
访问单个节点的删除
实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true解题思路:其实就是给了一个节点,这个节点加上后面的节点就是一个链表,然后再把后面那个节点的值和next引用赋给他,相当与跨过下一个节点实现删除效果public boolean removeNode(ListNode pNod原创 2017-11-28 23:24:41 · 170 阅读 · 0 评论 -
基本字符串压缩 利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。
//利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。给定一个string iniString为待压缩的串(长度小于等于10000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。测试样例"aabcccccaaa原创 2017-11-25 21:46:41 · 1396 阅读 · 2 评论