day_8(力扣简单题练习)

1 最后一个单词的长度

给定一个仅包括大小写字母和空格 ‘  ’ 的字符串 , 返回其最后一个单词的长度

如果不存在最后一个单词,请返回0

说明 : 一个单词是指由字母组成,但不包括任何空格的字符串

示例 :

输入 :  “Hello World”

输出 :  5

public static void main(String[] args) {

String str = "hello world";

int result = lastWord(str);

System.out.println("最后一个单词的长度为" + result);

}

// 读取字符串中每一个字符,如没有遇到空格则 + 1, 遇到空格则重新读取字符

// 如没有最后一个单词则返回0

public static int lastWord(String str) {

if (str.length() == 0 && str == null) {

return 0;

}

int x = 0;

int last = 0; // 记录最后一个单词长度

for (int i = 0; i < str.length(); i++) {

// 假如字符串最后一个字符为 ' ' , 则将x重新赋值为0, 直到最后一个单词读取完将x的值赋值给last

// str.charAt(i)为在字符串str中, 第 i 个字符的值. 默认也是从0开始

if (str.charAt(i) == ' ') {

x = 0;

} else {

x++;

last = x;

}

}

return last;

}

2 合并两个有序数组

给定两个有序整数数组,nums1 和nums2 ,将nums2合并到nums1中,使得nums1成为一个有序数组

说明 : 初始化 nums1 和 nums2 的元素数量分别为 m 和 n

           你可以假设nums1有足够的空间(空间大小大于或等于 m+n),来保存nums2中的元素

示例 :

输入 :  nums1 = {1,2,3,0,0,0} m = 3;

nums2 = {2,5,6}  n=3

输出 : {1,2,2,3,5,6}

public static void main(String[] args) {

int[] nums1 = { 1, 1, 2, 3, 4, 5, 6, 7 };

int[] nums2 = { 0, 2, 3, 5, 6, 6, 7, 8, 9 };

int[] nums3 = new int[(nums1.length) + (nums2.length)];

int x = 0;

// 将nums1中的数据传给nums3

for (int i = 0; i < nums1.length; i++) {

nums3[x] = nums1[i];

x++;

}

// 将nums2中的数据传给nums3

for (int i = 0; i < nums2.length; i++) {

nums3[x] = nums2[i];

x++;

}

// 冒泡排序nums3

for (int i = 0; i < nums3.length - 1; i++) {

for (int j = 0; j < nums3.length - 1 - i; j++) {

if (nums3[j] > nums3[j + 1]) {

int temp = nums3[j + 1];

nums3[j + 1] = nums3[j];

nums3[j] = temp;

}

}

}

// 输出nums3

for (int i = 0; i < nums3.length; i++) {

System.out.print(nums3[i] + " ");

}

}

3 验证回文串

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写

说明 : 本题中,我们将空字符串定义为有效的回文串,和回文数一样,正读反读一样

示例 1

输入 :  “A man , a plan , a canal : Panama”

输出 :  true

示例 2

输入 :  “race  a  car”

输出 :  false

4 只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次,找出那个只出现一次的元素

说明 : 你可以不使用额外空间来实现吗?

示例 1

输入 :  {2,2,1}

输出 :  1

示例 2

输入 :  {4,1,2,1,2}

输出 :  4

public static void main(String[] args) {

int[] arr = { 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6 };

// 从第一个数开始和后面所有数据作比较,如发现有一样的数据则从下两个开始重新比较,当出现不一样的输出x即可.

for (int i = 0; i < arr.length - 1;) {

if (arr[i] == arr[i + 1]) {

i = i + 2;

} else {

System.out.println("只出现一次的元素为" + arr[i]);

break;

}

}

}

5 加一

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一,

最高位数字存放在数组的首位,数组中每个元素只存储一个数字

你可以假设除了整数0之外,这个整数不会以 零 开头

示例 1

输入 :  {1,2,3}

输出 :  {1,2,4}

解释 :  输入数组表示数字 123.

示例 2

输入 :  {4,3,2,1}

输出 :  {4,3,2,2}

解释 :  输入数组表示数字 4321.

public static void main(String[] args) {

     int[] arr = {5,3,2,1,6,7,9};

   //首先将第一位 * 10后赋值给num1变量 , 之后每次赋值前将num1的所有数升位加上下一位数据

     int num1=0;

    for (int i = 0; i < arr.length; i++) {

num1 =num1*10+ arr[i];

}

    System.out.println("数组表示数字为" +num1 );

     //其次取出数组尾部值将其加一后赋给尾部

    int x=arr[arr.length-1];

    arr[arr.length-1]= x+1;

    for (int i = 0; i < arr.length; i++) {

System.out.print(arr[i] + " ");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值