文章目录
- 1.判断是否为回文字符串(题号:牛客NC141 )
- 2、求平方根(题号:牛客NC32 )
- 3.截断句子(力扣)
- 4.删除有序数组中的重复项(力扣)
1.判断是否为回文字符串(题号:牛客NC141 )
新手菜坤的答案:
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串 待判断的字符串
* @return bool布尔型
*/
public boolean judge (String str) {
// write code here
int right=str.length()-1;
int left=0;
while (left<right){
if (str.charAt(left)!=str.charAt(right)){
return false;
}
left++;
right--;
}
return true;
}
}
此题技巧:使用双指针法。
2、求平方根(题号:牛客NC32 )
直接遍历
import java.util.*;
public class Solution {
/**
*
* @param x int整型
* @return int整型
*/
public int sqrt (int x) {
// write code here
int res = 1;
// 注意转换为 long, 否则会产生溢出
while ((long)res * res <= x) {
res=res+1;
}
return res-1;
}
}
3.截断句子(力扣)
这本来是非常简单的一道题,但我一看到题目就想暴力遍历,写了好几次都出现错误,但好在最后还是搞出来了,但是时间和空间复杂度都比较高。
public class Solution {
public static String truncateSentence(String s, int k) {
int count=0;
int len1=s.length();
String S="";
for(int i=0;i<=len1-1;i++){
if (count!=k){
if(s.charAt(i) != ' '){
S=S+s.charAt(i);
}
else {
if(count!=k-1){
S=S+' ';
}
count++;
}
}
else
break;
}
int len2=S.length();
return S.substring(0,len2);
}
}
4.删除有序数组中的重复项(力扣)
此题技巧:使用快慢指针,这种解法不需要额外的空间,而且时间复杂度非常低。
class Solution {
public int removeDuplicates(int[] nums) {
int slow = 0;
for(int fast = 1; fast < nums.length; fast++) {
if (nums[fast] != nums[slow]) {
slow++;
nums[slow] = nums[fast];
}
}
return slow + 1;
}
}