1588 - 判断数字位置

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

根据输入的字符串判断字符串中数字的位置

题目输入

输入第一行表示测试用例的个数m,接下来m行每行以个字符串,字符串长度不超过50

题目输出

输出m行。每行输出一行数字,用空格隔开,按顺序表示字符串中出现的数字的位置。

输入/输出样例

输入格式

1
a3b4c5

输出格式

2 4 6

C语言解答

#include<stdio.h>
#include<string.h>
int main(){
	char in[51];
	int out[51];
	int k;
	int len;
	int i;
	int m;
	scanf("%d",&m);
	getchar();
	while(m--){
		gets(in);
		len = strlen(in);
		k = 0;
		for(i=0;i<len;i++){
			if(in[i]>='0'&&in[i]<='9'){
				out[k++] = i + 1;
			}
		}
		for(i=0;i<k;i++){
			if(i==k-1){
				printf("%d\n",out[i]);
			}
			else
			{
				printf("%d ",out[i]);
			}
		}

	}
	return 0;
}

C++解答

#include <cstdio>
#include <cstring>
#include <cctype>

int main() {
    //freopen("test.in", "r", stdin);
    //freopen("test.out", "w", stdout);
    int t;
    char s[100];
    scanf("%d", &t);
    while (t--) {
        scanf("%s", s);
        int n = strlen(s);
        bool first = true;
        for (int i = 0; i < n; ++i)
            if (isdigit(s[i])) {
                if (first) first = false;
                else putchar(' ');
                printf("%d", i + 1);
            }
        puts("");
    }
    return 0;
}

Java解答



import java.util.Scanner;

public class Main {
   private static Scanner s = new Scanner(System.in) ;
   
   public static void main(String[] args) {
	  int m = s.nextInt() ;
	  
	  for (int i = 0; i < m; i++) {
		  String str = s.next() ;
		  
		  char c[] = str.toCharArray() ;
		  int sum = 0 ;
		  for (int j = 0; j < c.length; j++) {
			 if(c[j]>='0'&&c[j]<='9'){
				sum++ ;
			 }
		  }
		  int a[] = new int[sum] ;
		  int k = 0 ;
		  for (int j = 0; j < c.length; j++) {
				 if(c[j]>='0'&&c[j]<='9'){
					a[k] = j ;
					k++ ;
				 }
			  }
		  for (int j = 0; j < a.length-1; j++) {
			System.out.print(a[j]+1+" ") ;
		  }
		  System.out.println(a[a.length-1]+1);
	  }
   }
}