首页 > 试题广场 >

表示数字

[编程题]表示数字
  • 热度指数:178383 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

将一个字符串中所有的整数前后加上符号“*”,其他字符保持不变。连续的数字视为一个整数。


数据范围:字符串长度满足

输入描述:

输入一个字符串



输出描述:

字符中所有出现的数字前后加上符号“*”,其他字符保持不变

示例1

输入

Jkdi234klowe90a3

输出

Jkdi*234*klowe*90*a*3*
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String input = in.nextLine();
input = input.replaceAll("(\\d+)", "*$1*");
System.out.println(input);
in.close();
}
}
发表于 2024-09-07 14:06:32 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (Character.isDigit(c)) {
                if (i == 0) {
                    sb.append("*");
                }
                // 当前是数字上一个字符不是数字
                if (i - 1 >= 0 && !Character.isDigit(str.charAt(i - 1))) {
                    sb.append("*");
                }
                sb.append(c);
                // 当前字符是数字并且下一个不是数字
                if (i + 1 < str.length() && !Character.isDigit(str.charAt(i + 1))) {
                    sb.append("*");
                }
                if (i == str.length() - 1) {
                    sb.append("*");
                }
            } else {
                sb.append(c);
            }
        }
        System.out.println(sb);
    }
}

发表于 2024-08-24 15:09:25 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String str = in.nextLine();
        StringBuilder sb = new StringBuilder();
        for(int i = 0;i < str.length();i++){
            if(str.charAt(i) >= '0' && str.charAt(i)<='9'){
                int j = i;
                sb.append("*");
                while(j < str.length() && str.charAt(j) >= '0' && str.charAt(j)<='9'){
                    sb.append(str.charAt(j++));
                }
                sb.append("*");
                i = j - 1;
            }else{
                sb.append(str.charAt(i));
            }
        }
        System.out.print(sb.toString());
    }
}

发表于 2024-04-02 00:09:02 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        StringBuilder sb = new StringBuilder();
        boolean flag = false;
        for (int i = 0; i < s.length(); i++) {
            if (Character.isDigit(s.charAt(i))) {
                if (flag == false) {
                    sb.append("*");
                    flag = true;
                }
                sb.append(s.charAt(i));
                if (i == s.length() - 1) sb.append("*");
            } else {
                if (flag) {
                    sb.append("*" + s.charAt(i));
                    flag = false;
                } else {
                    sb.append(s.charAt(i));
                }
            }
        }
        System.out.println(sb.toString());
    }
}

发表于 2023-11-28 19:25:28 回复(0)
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        StringBuilder sb = new StringBuilder(str);
        for(int i = 0; i<sb.length(); i++) {
            if(sb.charAt(i) >= '0' && sb.charAt(i) <= '9') {
                if(i == 0 || sb.charAt(i-1)<'0' || sb.charAt(i-1)>'9') {
                    //System.out.print(i + ": " +sb.charAt(i) +"\n");
                    sb.insert(i,'*');
                    i++;
                }
                if(i== sb.length()-1||sb.charAt(i+1) <'0' || sb.charAt(i+1)>'9') {
                    sb.insert(i+1, '*');
                    i++;
                }
            }
        }
        System.out.print(sb);
    }
}

发表于 2023-10-28 11:56:56 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String a = in.nextLine();
        char[] b = a.toCharArray();
        StringBuffer sb = new StringBuffer();
        for(int i=0;i<b.length;i++){
            char c = b[i];
            if(c>='0' && c <='9'){
                if(i==0 || (b[i-1] <'0' || b[i-1] >'9')){
                    sb.append("*");
                }
                sb.append(c);
                if(i==b.length-1 || (b[i+1] <'0' || b[i+1] >'9')){
                    sb.append("*");
                }
            }else{
                sb.append(c);
            }
        }
        System.out.print(sb.toString());
    }

}

核心思想就是遍历字符串的每一个字符,如果当前字符如果是数字,判断前后字符如果不是数字就可以加一个星号
发表于 2023-09-05 18:14:33 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String source = in.nextLine();
        boolean open = true;
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < source.length(); i++) {
            char c = source.charAt(i);
            boolean b = c >= '0' && c <= '9';
            if (b && open) {
                result.append("*");
                open = false;
            } else if (!b && !open) {
                result.append("*");
                open = true;
            }

            result.append(c);

            if (i == source.length() - 1 && b) {
                result.append("*");
            }
        }
        System.out.println(result);
    }
}

发表于 2023-08-10 21:27:09 回复(0)
import java.io.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
        while ((str = br.readLine()) != null) {
            int len = str.length();
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < len - 1; i++) {
                // 首个字符为数字
                if (i==0 && ('0' <= str.charAt(i) && str.charAt(i) <= '9')) sb.append('*');
                char ch1 = str.charAt(i);
                char ch2 = str.charAt(i + 1);
                // (ch1 < '0' || ch1 > '9') && ('0' <= ch2 && ch2 <= '9')表示符号后是数字
                // ('0' <= ch1 && ch1 <= '9') && (ch2 < '0' || ch2 > '9')表示数字后是符号
                if (((ch1 < '0' || ch1 > '9') && ('0' <= ch2 && ch2 <= '9')) || (('0' <= ch1 && ch1 <= '9') && (ch2 < '0' || ch2 > '9'))) {
                    sb.append(ch1).append('*');
                // 连续的数字或连续的符号
                } else sb.append(ch1);
            }
            // 对最后一个字符进行判断,因为前面只拼接到倒数第二个字符,最后一个未拼接
            char ch3 = str.charAt(len - 1);
            // 是数字则拼接数字再拼接*
            if ('0' <= ch3 && ch3 <= '9') sb.append(ch3).append('*');
            // 是符号则直接拼接符号
            else sb.append(ch3);
            System.out.println(sb.toString());
        }
    }
}

发表于 2023-07-14 15:17:05 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str_old = in.nextLine();
        char[] char_old = str_old.toCharArray();
        StringBuilder str_new = new StringBuilder();
        for (int i = 0; i < char_old.length; i++) {
            if (Character.isDigit(char_old[i]) && (i == 0 ||
                                                   !Character.isDigit(char_old[i - 1]))) {
                str_new.append("*");
                str_new.append(char_old[i]);

            } else if (i > 0 && Character.isDigit(char_old[i - 1]) &&
                       !Character.isDigit(char_old[i])) {
                str_new.append("*");
                str_new.append(char_old[i]);

            } else {
                str_new.append(char_old[i]);

            }
            if (Character.isDigit(char_old[i]) && i == char_old.length - 1) {
                str_new.append("*");

            }

        }
        System.out.println(str_new);

    }
}

发表于 2023-04-17 10:50:35 回复(0)
public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String a = in.next();
            a=a+" ";
            char[] chars = a.toCharArray();
            int numCount=0;
            StringBuffer bfAll = new StringBuffer();
            for(int i=0;i<chars.length;i++){
                char c = chars[i];
                if(numCount==0){//没有数字
                    if(c>=48 && c<=57){//当前字符是数字
                         bfAll.append("*").append(c);
                         numCount=1;
                    }else{
                        bfAll.append(c);
                    }
                }else{//已经有数字
                    if(c<48 || c>57){//当前字符不是数字
                         bfAll.append("*").append(c);
                         numCount=0;
                    }else{
                        bfAll.append(c);
                    }
                }
            }
            System.out.println(bfAll.toString());
        }
    }
发表于 2023-04-16 23:08:36 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s1 = in.nextLine();
        in.close();

        StringBuilder sb = new StringBuilder();
        int i = 0;
        while (i < s1.length()) {
            while (i < s1.length() && !Character.isDigit(s1.charAt(i))) {
                sb.append(s1.charAt(i));
                i++;
            }
            if (i == s1.length()) {
                break;
            }
            int j = i;
            while (j < s1.length() && Character.isDigit(s1.charAt(j))) {
                j++;
            }
            sb.append("*").append(s1.substring(i, j)).append("*");
            i = j;
        }
        System.out.println(sb.toString());
    }
}

发表于 2023-03-01 21:59:48 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String line = in.nextLine();
            StringBuilder sb = new StringBuilder();
            boolean f = false;
            for(int i = 0; i < line.length(); i++){
                if(line.charAt(i) >= '0' && line.charAt(i) <= '9') {
                    if(!f) {
                        sb.append('*');
                        f = true;
                    }
                } else {
                    if(f) {
                        sb.append('*');
                        f = false;
                    }
                }
                sb.append(line.charAt(i));
            }
            if(f) {
                sb.append('*');
            }
           
            System.out.println(sb);
        }
    }
}
发表于 2023-02-16 09:39:31 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String str=in.nextLine();
        // String str1= str.replaceAll("([0-9]+)","*$1*");
        // System.out.print(str1);
        StringBuilder builder=new StringBuilder();
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)>='0'&&str.charAt(i)<='9'){
                builder.append('*');
                builder.append(str.charAt(i));
                int j=i;
                while((i+1<str.length()&&str.charAt(i+1)>='0'&&str.charAt(i+1)<='9')){
                    if(str.charAt(i+1)>='0'&&str.charAt(i+1)<='9') {
                        builder.append(str.charAt(i+1));
                    }
                    i++;
                }
                builder.append('*');
            }
            else{
                builder.append(str.charAt(i));
            }
        }
        System.out.print(builder);
    }
}
发表于 2023-02-04 11:28:55 回复(0)
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            // 字符直接跳过
            if(Character.isDigit(str.charAt(i))){
                int start = i,end = i;
                while(end <str.length() && Character.isDigit(str.charAt(end))){
                    end++;
                }
                // 数字记录下来位置并替换
                stringBuilder.append("*"+str.substring(start,end)+"*");
                i = end - 1;
            }else {
                stringBuilder.append(str.charAt(i));
            }
        }
        System.out.println(stringBuilder.toString());
    }
}

发表于 2022-08-29 13:22:29 回复(0)
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        System.out.println(method2(str));
    }
    /**
     * 字符串拼接
     */
    private static String method2(String str){
        char[] cs = str.toCharArray();
        StringBuilder builder = new StringBuilder();
        boolean isLetter = String.valueOf(cs[0]).matches("[A-Za-z]");//是否字母
        boolean first = String.valueOf(cs[0]).matches("[0-9]");//第一个是不是数字
        boolean last = String.valueOf(cs[str.length()-1]).matches("[0-9]");//最后一个是不是数字
        for (char c : cs){
            if (c>='0' && c<='9'){
                if (isLetter){
                    builder.append("*");
                    isLetter = false;
                }
            }else{
                if (!isLetter){
                    builder.append("*");
                    isLetter = true;
                }
            }
            builder.append(c);
        }
        if (first){
            //如果第一个是数字
            builder.insert(0,'*');
        }
        if (last){
            //如果最后一个是数字
            builder.append("*");
        }
        return builder.toString();
    }
}
发表于 2022-08-03 16:37:57 回复(0)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
        while((str=br.readLine())!=null){
            StringBuffer sb=new StringBuffer();
            for(int i=0;i<str.length();i++){
                if(Character.isDigit(str.charAt(i))&&(i==0||!Character.isDigit(str.charAt(i-1)))){
                    sb.append("*");
                }
                sb.append(str.charAt(i));
                if(i==str.length()-1&&Character.isDigit(str.charAt(i))){
                    sb.append("*");
                    break;
                }
                if(i==str.length()-1){
                    break;
                }
                if(!Character.isDigit(str.charAt(i+1))&&Character.isDigit(str.charAt(i))){
                    sb.append("*");
                }
            }
            System.out.println(sb.toString());
        }
    }
}

发表于 2022-08-02 14:07:03 回复(0)