要求:去除句子句首句尾的空格,单词间的空格若连续出现多个,只保留一个
注释:两种方法实现了。第一种方法比较水,参照之前写的把句子中的空格转换为“%20”那道题,硬是调用自带的函数,能实现,但感觉略复杂化了,就不多说了
第二种方法,逐个读取字符串里的字符,逐个判断,简单易懂,先去除句首句尾空格,缩小范围,再在这个小范围里逐个判断,实现
#include <stdio.h>
#include <string>
#include <string.h>
#include <iostream>
using namespace std;
char* formatString1(char* sourceString){
int length1 = strlen(sourceString);
int length2 = 0;
if(length1==0)
return '\0';
char space[]= " ";
char final[256];
char *p;
int cnt=0;
//句首处理
p=sourceString;
while(*p == ' ')
strcpy(sourceString,p);
length1 = strlen(sourceString);
while(strstr(sourceString,space)!=NULL)
p=strstr(sourceString,space);
length2=strlen(p);
memcpy(&final,sourceString,(length1-length2));
final[(length1-length2)]='\0';
while( *p == ' ')
cnt++;//计空格数
--p;//留一个空格
strcat(final,p);
length1=length1-(cnt+1);
cnt=0;
strcpy(sourceString,final);
//句尾处理
length1 = strlen(sourceString);
p=&sourceString[length1-1];
while(*p == ' ')
cnt++;
sourceString[length1-cnt]='\0';
return sourceString;
char* formatString2(char* sourceString){
int length=strlen(sourceString);
if(length==0)
return "";
int start=0,end=length-1;
while(sourceString[start] == ' ')//句首
start++;
while(sourceString[end] == ' ')//句尾
end--;
char str[256];
int pos=0;
for(int i=start;i<=end;i++)
if(sourceString[i] != ' ')
str[pos++]=sourceString[i];
else if(sourceString[i] == ' ' && sourceString[i-1] == ' ')//多个空格
str[pos++]=' ';
while(sourceString[i] == ' ')
i--;//while循环里还要加一次
else if(sourceString[i] == ' ' && sourceString[i+1] != ' ')//单独一个空格
str[pos++]=' ';
str[pos]='\0';
return str;
int main()
char str[]= " I love meituan ";
char *p=formatString2(str);
printf("%s//over\r\n",p);
要求:去除句子句首句尾的空格,单词间的空格若连续出现多个,只保留一个注释:两种方法实现了。第一种方法比较水,参照之前写的把句子中的空格转换为“%20”那道题,硬是调用自带的函数,能实现,但感觉略复杂化了,就不多说了第二种方法,逐个读取字符串里的字符,逐个判断,简单易懂,先去除句首句尾空格,缩小范围,再在这个小范围里逐个判断,实现#include #include #incl
public String sortSentence(String s) {
String v=new String();
String[] str=s.split(" ");//
String[] cc=new String[str.length];
for(int i=0;i<str.length;i++){
char[] ch=str[i].toCharArray();
> 给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用
空格分割, 单词之间只有一个空格,前后没有空格。
比如: (1) “hello xiao mi”-> “mi xiao hello”
输入描述:
> 输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)
输出描述:
> 对于每个测试示例,要求输出句子中单词反转后形成的句子
hello xiao mi
例: 输入:hello world hello hello 输出:hello hello world hello
a = input("请输入一串字符:")
# 在字符串末尾加上空格
a=a+' '
# 确定a的长度
b = len(a)
# 定义一个空的列表以备将截取的子字符串正序存入
c = []
d = 0
# 定义空字符串作为过渡,将子字符串暂时存入字符串中(方便书写)
e=...
正常空一格写完后,用开始,替换功能:查找内容. 替换为. +空格。在审阅模式下就能看到所有的句号后面多了一个空格。完美
但是还要回去修改下FIG, etc. 之类的被误伤的特殊字符
java中的增删改查语句时,始终跑不通测试,折腾了半天才发现原来是sql语句拼写有问题,奇怪的是eclipse并没有提示;
//一个单行查询,修改前
public Customer getOne(Integer id) {
// TODO Auto-generated method stub
String sql = “select id,name,addres
# Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
# you may not use this file except in complianc...
修改jieba根目录下init.py
搜索re_han_default = re.compile("([\u4E00-\u9FD5a-zA-Z0-9+#&\._]+)", re.U)
改成re_han_default = re.compile("(.+)", re.U)...
import java.io.*;
public class Main{
public static void main(String[] args)throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public class Test1 {
public static void main(String[] ages) {
Scanner scanner = new Scanner(System.in); //创建一个从键盘输入对象
String s = scanner.ne...
Java程序可以读取用户输入的单行英文句子,并可以处理包含英文字母、空格以及句点、问号和感叹号等标点符号的字符串。首先,我们可以使用Scanner类从控制台读取用户输入的字符串。代码如下:
Scanner scanner = new Scanner(System.in);
String sentence = scanner.nextLine();
接着,我们可以使用正则表达式将句子拆分成单词。我们可以使用String类的split()方法,该方法接受一个正则表达式作为参数,并返回一个包含单词的字符串数组。代码如下:
String[] words = sentence.split("[\\s,.?]+");
在这个正则表达式中,我们使用了字符类 [...] 来匹配空格、句点、问号和感叹号,加号表示匹配多个连续的字符。
最后,我们可以遍历单词数组,并对单词进行处理。例如,可以计算单词的长度、计算句子中单词的数量、将单词转化为大写或小写等。代码如下:
int wordCount = words.length;
for (int i = 0; i < wordCount; i++) {
String word = words[i];
int length = word.length();
String upper = word.toUpperCase();
String lower = word.toLowerCase();
// 对单词进行其他处理...
这些简单的代码片段提供了一个基本的框架来处理句子中的单词。当然,实际上我们可以做更多的事情,例如去除单词中的标点符号、计算句子的重复单词数等等。