刷题日记day01

1 篇文章 0 订阅

1,判断是否为回文字符串

给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文。如果是回文请返回true,否则返回false。

数据范围:0 < n ≤10000000

要求:空间复杂度 O(1) ,时间复杂度O(n)

解题思路:新建一个StringBuilder类型的字符串,反向遍历字符串str,将其中的字符保存到s中,再对比s和str,如果两者相同,则表明字符串str是回文字符串,反之则不是回文字符串。

import java.util.*;
public class Solution {
    public boolean judge (String str) {
       StringBuilder s = new StringBuilder();
       for(int i=str.length()-1;i>=0;i--){
           s.append(str.charAt(i));
       }
       if(s.toString().equals(str)){
           return true;
       }
       return false; 
    }
}

2,判断字符是否唯一

给定一个字符串,请你判断其中每个字符是否全都不同。

数据范围:字符串长度满足1≤n≤100 

示例1

输入:"nowcoder"

返回值:false

说明: "nowcoder" 中 'o' 出现了两次,因此返回 false

示例2

输入:"nowcOder"

返回值:true

说明:每个字符都只出现了一次

解题思路:遍历字符串str,如果有相同则false

import java.util.*;
public class Solution {
    public boolean isUnique (String str) {
        for(int i=0;i<str.length();i++){
            for(int j=i+1;j<str.length();j++){
                if(str.charAt(i)==str.charAt(j)){
                    return false;
                }
            }
        }
        return true;
    }
}

3,排序

描述

给定一个长度为 n 的数组,请你编写一个函数,返回该数组按升序排序后的结果。

数据范围: 0≤n≤1×10^{3},数组中每个元素都满足0≤val≤10^{9}

要求:时间复杂度 O(n^{2}),空间复杂度O(n)

进阶:时间复杂度O(nlogn),空间复杂度O(n)

注:本题数据范围允许绝大部分排序算法,请尝试多种排序算法的实现。

示例1

输入:[5,2,3,1,4]

返回值:[1,2,3,4,5]

示例2

输入:[5,1,6,2,5]

返回值:[1,2,5,5,6]

解题思路:可以直接用排序方法做,也可以通过循环来处理,如果前一位大于后一位则二者交换位置。

import java.util.*;
public class Solution {
    public int[] MySort (int[] arr) {
         for(int i=0;i<arr.length;i++){
             for(int j=i+1;j<arr.length;j++){
                 if(arr[i]>arr[j]){
                     int t = arr[i];
                     arr[i] = arr[j];
                     arr[j] = t;
                 }
            }   
         }
       // Arrays.sort(arr); 直接用Arrays.sort()排序也可以通过
        return arr;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值