Java 的 String 类基本用法介绍:http://www.runoob.com/java/java-string.html

Java 的 String.substring 函数:https://beginnersbook.com/2013/12/java-string-substring-method-example/

Google coding style:https://google.github.io/styleguide/javaguide.html

String 不支持下标索引的方式访问,所以需要使用charAt(i)的方式访问对应位置的字符。同时也就没有办法使用下标的方式对String进行修改。

String是一种不可变类,字符串一但生成就不能被改变。例如我们使用**‘+’进行字符串连接,会产生新的字符串,原串不会发生任何变化;使用replace()** 进行替换某些字符的时候也是产生新的字符串,不会更改原有字符串。

https://leetcode.com/problems/valid-palindrome/submissions/

 class Solution {
public boolean isValid(char c){
return (Character.isLetter(c) || Character.isDigit(c));
} public boolean isPalindrome(String Ss) {
String s=Ss.toLowerCase();
int sl=s.length();
int xl=0, xr=sl-1;
boolean res=true;
while(xl<xr){
while(xl<sl && (!isValid(s.charAt(xl)))) xl+=1;
while(xr>=0 && (!isValid(s.charAt(xr)))) xr-=1;
if(xr<0 || xl>=sl)
break;
if(s.charAt(xl)!=s.charAt(xr)){
res=false;
break;
}
xl+=1;
xr-=1;
}
return(res);
}
}

Rabin-Karp Algorithm:在字符串中找子串

算法原理:

Ref: https://www.jianshu.com/p/68cbe955103e

https://leetcode.com/problems/implement-strstr/

 class Solution {
public int MOD=1000000;
public int INC=31;
public int strStr(String src, String dsc) {
if(src==null || dsc==null)
return -1;
int dl=dsc.length(), sl=src.length();
if(dl==0)
return 0; int power=1;
for(int i=0;i<dl;i++)
power=(power*INC)%MOD; int dschash=0;
for(int i=0;i<dl;i++)
dschash = (dschash*INC + dsc.charAt(i)) % MOD; //hash code of dsc int srchash=0;
for(int i=0;i<sl;i++){
srchash = (srchash*INC + src.charAt(i)) % MOD; //calculate hash of src
if(i<dl-1)
continue;
else if(i>=dl){
srchash = srchash - (src.charAt(i-dl) * power) % MOD;
while(srchash<0)
srchash += MOD;
}
if(srchash == dschash){ //hash(src[i-m+1..i]) == hash(dsc)
if(src.substring(i-dl+1, i+1).equals(dsc))
return(i-dl+1);
}
} return(-1);
}
}

子数组与前缀和

https://leetcode.com/problems/maximum-subarray/

使用前缀和,令p[i]=sum{ A[0]...A[i-1] }(p[0]=0,这个是为了方便后面计算用),那么就有sum{A[i]...A[j]} = p[j+1]-p[i]

设f[j]表示所有以A[j]结尾的子数组中最大的subarray,那么就有f[j] = p[j+1] - min{ p[0]...p[j] }

单纯的计算某个f[j]的时间复杂度是O(N)的,但其实计算好f[j]后,可以用O(1)的时间再计算出f[j+1]。所以整体的时间复杂度仍然是O(N)的。

 class Solution {
public int maxSubArray(int[] nums) {
int nl=nums.length;
int[] prefix=new int[nl+1];
prefix[0]=0;
for(int i=1;i<nl+1;i++)
prefix[i]=prefix[i-1]+nums[i-1]; int[] f=new int[nl];
int minp=0; for(int i=0;i<nl;i++){
minp=Math.min(minp, prefix[i]);
f[i]=prefix[i+1]-minp;
} int ans=f[0];
for(int i=1;i<nl;i++)
ans=Math.max(ans, f[i]);
return(ans);
}
}

https://www.lintcode.com/problem/subarray-sum/description

Q:找和为0的subarray

A:求出prefix[],用hashmap找里面相等的元素。O(N)

https://www.lintcode.com/problem/subarray-sum-closest/description

Q:找和最接近0的subarray

A:求出prefix[],找prefix[]中最接近的两个元素(排序)。 O(NlogN)

其他

UNDER CONSTRUCTION

https://leetcode.com/problems/subsets/

https://leetcode.com/problems/subsets-ii/

Leetcode Lect1 String相关题目的更多相关文章

  1. [LeetCode] 链表反转相关题目

    暂时接触到LeetCode上与链表反转相关的题目一共有3道,在这篇博文里面总结一下.首先要讲一下我一开始思考的误区:链表的反转,不是改变节点的位置,而是改变每一个节点next指针的指向. 下面直接看看 ...

  2. leetcode 单链表相关题目汇总

      leetcode-19-Remove Nth From End of List—移除链表中倒数第n个元素 leetcode-21-Merge Two Sorted Lists—两个已排序链表归并 ...

  3. [leetcode] 根据String数组构造TreeNode,用于LeetCode树结构相关的测试用例

    LeetCode 跟树结构相关的题目的测试用例中大多是通过String数组来构造树.例如{2,#,3,#,4,#,5,#,6},可以构造出如下的树(将树结构逆时针选择90度显示): 6         ...

  4. LeetCode: Palindrome 回文相关题目

    LeetCode: Palindrome 回文相关题目汇总 LeetCode: Palindrome Partitioning 解题报告 LeetCode: Palindrome Partitioni ...

  5. leetcode tree相关题目总结

    leetcode tree相关题目小结 所使用的方法不外乎递归,DFS,BFS. 1. 题100 Same Tree Given two binary trees, write a function ...

  6. LeetCode All in One 题目讲解汇总(转...)

    终于将LeetCode的免费题刷完了,真是漫长的第一遍啊,估计很多题都忘的差不多了,这次开个题目汇总贴,并附上每道题目的解题连接,方便之后查阅吧~ 如果各位看官们,大神们发现了任何错误,或是代码无法通 ...

  7. [LeetCode] Encode String with Shortest Length 最短长度编码字符串

    Given a non-empty string, encode the string such that its encoded length is the shortest. The encodi ...

  8. [LeetCode] Decode String 解码字符串

    Given an encoded string, return it's decoded string. The encoding rule is: k[encoded_string], where ...

  9. [LeetCode] Rearrange String k Distance Apart 按距离为k隔离重排字符串

    Given a non-empty string str and an integer k, rearrange the string such that the same characters ar ...

随机推荐

  1. 【转】DDR3和eMMC区别

    转自:https://www.cnblogs.com/debruyne/p/9186619.html DDR3内存条和eMMC存储器区别: 1. 存储性质不同:2. 存储容量不同:3. 运行速度不同: ...

  2. BZOJ-1907 树的路径覆盖 贪心

    题意:给一个n个点的树,求树的最小路径覆盖.(这个最小路径覆盖不能有重点) 解法:往图论方向想很久,想得太复杂了,其实直接贪心.这个大佬题解写得很好: https://blog.csdn.net/bl ...

  3. stream benchmark 介绍

    英文原版 https://www.cs.virginia.edu/stream/ref.html FAQ中有关于STREAM_ARRAY_SIZE NTIME OFFSET STREAM_TYPE的设 ...

  4. navicat连接客户端报错

    怎么感觉oracle和sql server是一个货色.装个服务得装半天,还是mysql好,一下子就好了!下面有一个在centos7上面安装oracle11g的详细步骤,感觉找不到比这个更详细的了吧! ...

  5. nyoj 119: 士兵杀敌(三) 【RMQ模板】

    题目链接 贴个板子.. #include<bits/stdc++.h> using namespace std; int n,q; ],d1[][],d2[][]; void RMQ_in ...

  6. hadoop平台搭建

    前言 这是小的第一次搭建hadoop平台,写下这篇博客有以下几个目的(ps:本博只记录在linux系统下搭建hadoop的步骤,如果需要了解在其他平台上搭建hadoop的步骤,还请移步): 1.希望大 ...

  7. php面试专题---7、文件及目录处理考点

    php面试专题---7.文件及目录处理考点 一.总结 一句话总结: 用脑子:基本文件操作和目录操作了解一波,不必强求 1.不断在文件hello.txt头部写入一行“Hello World”字符串,要求 ...

  8. PHP7.2中AES加密解密方法mcrypt_module_open()替换方案 Function mcrypt_get_block_size() is deprecated

    直接粘代码,该类是基于微信公众号消息加密解密所提供的PHP DEMO改造而来,目前使用于彬彬大学APP接口token校验中. php的mcrypt 扩展已经过时了大约10年,并且用起来很复杂.因此它被 ...

  9. leetcode 155. 最小栈(c++)

    设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中.pop() -- 删除栈顶的元素.top() -- 获取栈顶元素.get ...

  10. SPSS详细教程:OR值的计算

    SPSS详细教程:OR值的计算 一.问题与数据 研究者想要探索人群中不同性别者喜欢竞技类或娱乐性体育活动是否有差异.研究者从学习运动医学的学生中随机招募50名学生,记录性别并询问他们喜欢竞技类还是娱乐 ...