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; } }