字符串的算法题目
创始人
2024-01-28 20:52:33
0

题目一:

描述
对于一个长度为 n 字符串,我们需要对它做一些变形。

首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把这个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。

比如"Hello World"变形后就变成了"wORLD hELLO"。

数据范围: 1\le n \le 10^61≤n≤10
6
, 字符串中包括大写英文字母、小写英文字母、空格。
进阶:空间复杂度 O(n)O(n) , 时间复杂度 O(n)O(n)

思路:

在这里插入图片描述

需要用到的知识点:

Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回子字符串数组
将一个字符串分割为子字符串,然后将结果作为字符串数组返回。

注意事项
在java.lang包中有String.split()方法,返回是一个数组。

使用时要注意参数如果是特殊符号的话要进行转义。

1、“.”和“|”都是转义字符,必须得加"“;
  如果用“.”作为分隔的话,必须是如下写法:
String.split(”.“),这样才能正确的分隔开,不能用String.split(”.“);
如果用“|”作为分隔的话,必须是如下写法:
String.split(”|“),这样才能正确的分隔开,不能用String.split(”|");

2、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“acount=? and uu =? or n=?”,把三个都分隔出来,可以用
  String.split(“and|or”);

3、public String[] split(String regex,int limit)根据匹配给定的正则表达式来拆分此字符串。
  此方法返回的数组包含此字符串的每个子字符串,这些子字符串由另一个匹配给定的表达式的子字符串终止或由字符串结束来终止。数组中
  的子字符串按它们在此字符串中的顺序排列。如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串。

方法一:

package com.company.day01;
/*
题目要求:
* 输入字符串:
"This is a sample",16返回值:
"SAMPLE A IS tHIS"*/
public class Solution1 {public static void main(String[] args) {Solution1 solution1 = new Solution1();String res = solution1.trans("This is a sample", 16);System.out.println(res);}/**** @param s* @param n* @return*/public String trans(String s, int n) {//第一步:先做容易的大小写转换,所有下小写颠倒if(n == 0)return s;StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < n; i++) {//如果是大写if(s.charAt(i) >= 'A' && s.charAt(i) <= 'Z'){//stringBuilder用于将转换后的字母串起来stringBuilder.append( (char)(s.charAt(i) + 32) );}else if(s.charAt(i) >= 'a' && s.charAt(i) <= 'z'){stringBuilder.append( (char)(s.charAt(i)-32) );}else {stringBuilder.append(s.charAt(i));//串空格}}//stringBuilder存的是大小写转换后的字符串//第二步:整个字符串反转StringBuilder reverse = stringBuilder.reverse(); //ELPMAS ---//第三步:每一个单词内部进行反转for (int i = 0; i < n; i++) {int j = i; //j指针 从 i位置开始遍历while(j 

方法二:

package com.company.day01;import java.util.ArrayList;
import java.util.List;/*
题目要求:
* 输入字符串:
"This is a sample",16返回值:
"SAMPLE A IS tHIS"*/
public class Solut2 {public static void main(String[] args) {Solut2 solut2 = new Solut2();String this_is_a_sample = solut2.trans("nowcoder",8);System.out.println(this_is_a_sample);}/**** @param s* @param n* @return*/public String trans(String s, int n) {//第一步:利用str.split将字符串分割成字符数组String[] strings = s.split(" ");//将字符串分割成字符数组://第二步:倒序取出字符串数组StringBuffer res = new StringBuffer();for (int i = strings.length-1; i >= 0; i--) {//System.out.println(strings[i]);//大小写转换StringBuffer stringWord = new StringBuffer(strings[i]);//遍历单词samplefor (int j = 0; j < stringWord.length(); j++) {//遍历单词数组if(stringWord.charAt(j)>='A' && stringWord.charAt(j)<='Z'){stringWord=stringWord.replace(j,j+1, String.valueOf((char) (stringWord.charAt(j) + 32)));}else if(stringWord.charAt(j)>='a' && stringWord.charAt(j)<='z'){stringWord =stringWord.replace(j,j+1, String.valueOf((char) (stringWord.charAt(j)-32)));}else{stringWord =stringWord.replace(j,j+1, " " );}}System.out.println("大小写后的:"+stringWord);res.append(stringWord).append(" ");}//去掉最后一个空格res.deleteCharAt(n);return res.toString();}
}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...