2021-07-19

【问题描述】
编写一个程序,从一个文件中读入单词(即:以空格分隔的字符串),并对单词进行排序,删除重复出现的单词,然后将结果输出到另一个文件中。
【输入形式】
从一个文件sort.in中读入单词。
【输出形式】
对单词进行排序,删除重复出现的单词,然后将结果输出到文件sort.out中。
【输入样例】
假如sort.in文件内容如下:
rrr sss aaa bbb ccc ddf aaa dd

【输出样例】
sort.out文件内容为:
aaa bbb ccc dd ddf rrr sss

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;


public class App {

	/**
	 * @param args *
	 * @throws IOException * 
     * @ ww * 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		
		String name="sort.in";
		File f1=new File(name);
		File f2=new File("sort.out");
		Scanner sc=new Scanner(f1);
		String[] str=new String[10];
        int i=0;
        while(sc.hasNext())
        {
            str[i]=sc.next();
            i++;
        }

        List list =new ArrayList<>();
        for(int j=0;j<i;j++)
        {
            if(!list.contains(str[j]))
            {
                list.add(str[j]);
            }
        }
        String str1[]=new String[10];
        int temp=0;
        for(temp=0;temp<list.size();temp++)
        {
            str1[temp]=list.get(temp).toString();
        }
        
    
        Arrays.sort(str1,0,temp);
    
		FileWriter fw=new FileWriter(f2);
        BufferedWriter bw=new BufferedWriter(fw);

        for(int j=0;j<temp;j++)
        {
            
            bw.write(str1[j]+" ");
        }
        sc.close();
        bw.close();
        fw.close();

	}

}



【问题描述】输入两行字符串s和t(s和t最长含50个字符,可以含有空格),将s串中首次与t匹配的子串逆置,并将结果输出。
【输入文件】输入文件为invertsub.in,含有两行字符串s和t,分别以#作为串结束符。
【输出文件】输出文件invertsub.out只有一行,包含一个串,是要求的输出结果。在行末也要有一个回车符。
【输入样例】helloworld#
llowor#
【输出样例】herowollld
【样例说明】helloworld和llowor中重复的子串为llowor,逆置后结果为herowollld

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class StringReverse{
    public static void main(String[] args) throws IOException
    {
        File f1=new File("invertsub.in");
        File f2=new File("invertsub.out");
        Scanner sc=new Scanner(f1);
        //FileReader fr=new FileReader(f1);
        
        StringBuffer s=new StringBuffer();
        StringBuffer t=new StringBuffer();
        s.append(sc.nextLine());
        t.append(sc.nextLine());
        sc.close();
        s.deleteCharAt(s.indexOf("#"));
        t.deleteCharAt(t.indexOf("#"));
        int flag=compareString(s, t);
        t.reverse();
        s.replace(flag, flag+t.length(), t.toString());
        
        FileWriter fw=new FileWriter(f2);
        BufferedWriter bw=new BufferedWriter(fw);
        for(int i=0;i<s.length();i++)
        {
            bw.write(s.charAt(i));
        }
        bw.close();
        fw.close();

        
        
    }
    public static int compareString(StringBuffer s,StringBuffer t)
    {
        int temp=0;
        for(int i=0;i<=s.length()-t.length();i++)
        {
            if(s.charAt(i)==t.charAt(0))
            {
                int flag=1;
                for(int j=1;j<t.length();j++)
                {
                    if(s.charAt(i+j)!=t.charAt(j))
                    {
                        flag=0;
                        break;
                    }
                }
                if(flag==1)
                {
                    temp=i;
                    break;
                    
                }
            }
        }
        return temp;
        
        
    }
}
在这里插入代码片

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值