ccf_201409-3_字串匹配(java&c++)
阿新 • • 發佈:2019-01-07
試題編號: | 201409-3 |
試題名稱: | 字串匹配 |
時間限制: | 1.0s |
記憶體限制: | 256.0MB |
問題描述: |
問題描述 給出一個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項:當選項開啟時,表示同一個字母的大寫和小寫看作不同的字元;當選項關閉時,表示同一個字母的大寫和小寫看作相同的字元。 輸入格式 輸入的第一行包含一個字串S,由大小寫英文字母組成。 輸出格式 輸出多行,每行包含一個字串,按出現的順序依次給出那些包含了字串S的行。 樣例輸入 Hello 樣例輸出 HelloWorld 樣例說明 在上面的樣例中,第四個字串雖然也是Hello,但是大小寫不正確。如果將輸入的第二行改為0,則第四個字串應該輸出。 評測用例規模與約定 1<=n<=100,每個字串的長度不超過100。 |
java:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); int flag = sc.nextInt(); int n = sc.nextInt(); String[] s= new String[n+1]; for(int i = 0; i <= n; i++) { s[i] = sc.nextLine(); } if(flag == 1) { for(int i = 0; i <= n; i++) { if(s[i].contains(str)) { System.out.println(s[i]); } } }else { for(int i = 0; i <= n; i++) { if(s[i].toLowerCase().contains(str.toLowerCase())) { System.out.println(s[i]); } } } } }
c++:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a,b[101],c[101];
int i,j,n,f;
cin>>a;
cin>>f>>n;
for(i=0;i<n;i++)
{
cin>>b[i];
c[i]=b[i];
}
if(f==0)
{
for(i=0;a[i]!='\0';i++)
{
if(a[i]>='A'&&a[i]<='Z')
a[i]=a[i]+32;
}
for(i=0;i<n;i++)
{
for(j=0;b[i][j]!='\0';j++)
{
if(b[i][j]>='A'&&b[i][j]<='Z')
c[i][j]=b[i][j]+32;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<=b[i].length()-a.length();j++)
if(c[i].substr(j,a.length())==a)
{
cout<<b[i]<<endl;
break;
}
}
}
else
{
for(i=0;i<n;i++)
{
for(j=0;j<=b[i].length()-a.length();j++)
if(b[i].substr(j,a.length())==a)
{
cout<<b[i]<<endl;
break;
}
}
}
return 0;
}