1588 - 判断数字位置
时间限制 : 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); } } }