单词倒排(Java)

牛客链接

单词倒排

题目

对字符串中的所有单词进行倒排。

说明:

1、构成单词的字符只有26个大写或小写英文字母;

2、非构成单词的字符均视为单词间隔符;

3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;

4、每个单词最长20个字母;


输入描述

输入一行以空格来分隔的句子


输出描述

输出句子的逆序

解题思路

需要用到正则表达式:[^a-zA-Z] (去匹配目标字符串中非a—z也非A—Z的字符)
所以将字符串用split以正则表达式包含的字符分隔开,剩下的全是可以组成单词的字符。再将这些字符串逆序输出即可。

代码实现

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            StringBuilder res = new StringBuilder();
            String str = scanner.nextLine();
            String[] tem = str.split("[^a-zA-Z]+");
            for (int i = tem.length-1;i>=0;i--) {
                res.append(tem[i]);
                if(i!=0) {
                    res.append(" ");
                }
            }
            System.out.println(res);
        }
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
倒排索引(Inverted Index)是一种常见的文本索引方法,主要用于全文搜索、信息检索等领域。在倒排索引中,每个单词都与包含该单词的文档列表相关联,通过该索引可以快速找到包含某个单词的文档。 下面是一个简单的 Java 实现: ```java import java.util.*; public class InvertedIndex { private Map<String, List<Integer>> index = new HashMap<>(); public void addDocument(int docId, String[] words) { for (String word : words) { List<Integer> docs = index.getOrDefault(word, new ArrayList<>()); docs.add(docId); index.put(word, docs); } } public List<Integer> search(String query) { return index.getOrDefault(query, new ArrayList<>()); } public static void main(String[] args) { InvertedIndex invertedIndex = new InvertedIndex(); invertedIndex.addDocument(1, new String[]{"apple", "banana", "orange"}); invertedIndex.addDocument(2, new String[]{"banana", "pear", "grape"}); invertedIndex.addDocument(3, new String[]{"orange", "pear", "apple"}); List<Integer> result = invertedIndex.search("banana"); System.out.println(result); } } ``` 在上述实现中,`addDocument` 方法用于向倒排索引中添加文档,其中 `docId` 表示文档的编号,`words` 表示文档中包含的单词。该方法会将每个单词与包含该单词的文档列表相关联,如果该单词还没有对应的文档列表,则创建一个新的列表。最后将单词和文档列表放入索引中。 `search` 方法用于根据查询词从倒排索引中查找包含该词的文档列表。如果倒排索引中不存在该词,则返回一个空列表。 在上述实现中,我们创建了一个包含三个文档的倒排索引,并查找包含单词 "banana" 的文档列表。输出结果为 `[1, 2]`,表示包含 "banana" 的文档编号为 1 和 2。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值