海量文本中的词语距离:在 O(n) 时间内找到最近的词对
想象一个巨大的日志文件、一部鸿篇巨著或者网络爬虫抓取的数据——它们可能达到 TB 级别。现在,假设你需要找出两个特定的词(比如 词语1 和 词语2)在这段庞大文本中出现时,彼此“靠得最近”的距离是多少。
挑战: 给定一个可能非常巨大的文本文件(大到无法完全放入内存),它由一连串单词组成。请找出文件中任意出现的 词语1 和任意出现的 词语2 之间的最小距离(用它们之间相隔的单词数量来衡量)。我们需要一个高效的解决方案,最好能以线性时间 (O(n)) 处理完文件,其中 n 是文件中的总单词数。
为什么朴素方法会“碰壁”?
-
O(n²) 的陷阱(嵌套循环):
- 想法: 遍历文件。每当找到 词语1 时,就启动另一次完整的遍历(或向前/向后搜索)来找到所有的 词语2,计算距离,并记录最小值。
- 问题: 如果 词语1 出现了 k 次,最坏情况下这大约需要 k * n 次操作。因为 k 可能与 n 成正比,这会导致 O(n²) 的时间复杂度——对于大文件来说,慢得令人无法接受。
-
存储所有位置(潜在的内存“吞噬者”):
- 想法: 扫描文件一次。将 词语1 出现的所有位置(索引)存入列表 listA,将 词语2 出现的所有位置存入列表 listB。然后,比较这两个列表,找出 listA 中的某个索引与 listB 中某个索引之间的最小差值。(高效比较这两个列表可能需要合并它们或在排序后的列表上使用双指针法)。
- 问题: 如果文件真的非常大,并且 词语1 或 词语2 出现得非常频繁,listA 或 listB(或两者)可能会变得极其庞大,可能超出可用内存。虽然比 O(n²) 好,但它不能保证低内存使用率。
优雅的 O(n) 时间, O(1) 空间解决方案
但是对于超大文本,如果文本太大那这个list可能溢出。如果继续观察,我们会发现其实不用单独构造list,从左到右遍历数组words,当遍历到 word1时,如果已经遍历的单词中存在word2 ,为了计算最短距离,应该取最后一个已经遍历到的 word2所在的下标,计算和当前下标的距离。同理,当遍历到word2时,应该取最后一个已经遍历到的word1所在的下标,计算和当前下标的距离。
基于上述分析,可以遍历数组一次得到最短距离,将时间复杂度降低到O(n)。用index1和index2分别表示数组words 已经遍历的单词中的最后一个word1的下标和最后一个word2的下标,初始时index1 =index2=−1。遍历数组words,当遇到word2时,执行如下操作:
- 如果遇到word1 ,则将index1更新为当前下标;如果遇到word2,则将index2更新为当前下标。
- 如果index1和index2都非负,则计算两个下标的距离 ∣index1−index2 ∣,并用该距离更新最短距离。
遍历结束之后即可得到word1和word2的最短距离。
我们需要一种方法,只需单次遍历文件,且无需存储可能非常大的位置列表。关键的洞察在于:
- 当我们扫描文件时,我们只需要记住最近一次看到 词语1 的位置以及最近一次看到 词语2 的位置。
为什么这样可行?
想象一下,你刚刚在索引 i 处遇到了 词语1。要找到包含这个特定 词语1 的最短距离,你只关心离它最近的那个 词语2。由于你是线性扫描的,到目前为止遇到的最接近的 词语2 必然是你最后看到的那个 词语2(在索引 last_w2_index 处)。在 last_w2_index 之前看到的任何 词语2 都会比当前在索引 i 的 词语1 更远。同样的逻辑,当你遇到 词语2 时也对称适用。
算法步骤:
-
初始化 minIndex = 无穷大 (或者一个非常大的数)。
-
初始化 index1 = -1 (存储 词语1 的最新索引)。
-
初始化 index2 = -1 (存储 词语2 的最新索引)。
-
初始化 current_index = 0。
-
逐个遍历文件中的单词:
-
设当前单词为 word。
-
如果 word 等于 词语1:
- 更新 index1 = current_index。
- 如果 index2 不为 -1(意味着之前见过 词语2),计算距离:distance = abs(index1 - index2)。更新 minIndex = min(minIndex, distance)。
-
否则,如果 word 等于 词语2:
- 更新 index2 = current_index。
- 如果 index1 不为 -1(意味着之前见过 词语1),计算距离:distance = abs(index1 - index2)。更新 minIndex = min(minIndex, distance)。
-
增加 current_index。
-
-
遍历完整个文件后,minIndex 将保存找到的最小距离。如果 minIndex 仍然是无穷大,则表示至少有一个词未找到,或者它们从未在另一个词出现之后出现过。
示例演练:
文件:猫 狗 你好 猫 世界 狗 猫 (词语1="猫", 词语2="狗")
索引 | 单词 | index1 | index2 | abs(i1-i2) | minIndex | 备注 |
---|---|---|---|---|---|---|
0 | 猫 | 0 | -1 | - | 无穷大 | 看到 猫 |
1 | 狗 | 0 | 1 | abs(0-1)=1 | 1 | 看到 狗, 计算距离 |
2 | 你好 | 0 | 1 | - | 1 | |
3 | 猫 | 3 | 1 | abs(3-1)=2 | 1 | 看到 猫, 更新距离 |
4 | 世界 | 3 | 1 | - | 1 | |
5 | 狗 | 3 | 5 | abs(3-5)=2 | 1 | 看到 狗, 更新距离 |
6 | 猫 | 6 | 5 | abs(6-5)=1 | 1 | 看到 猫, 更新距离 |
最终 minIndex = 1。
复杂度分析:
- 时间复杂度:O(n) - 我们精确地读取文件一次。处理每个单词涉及常数次比较和更新。
- 空间复杂度:O(1) - 无论文件大小或单词频率如何,我们只使用几个变量(minIndex, index1, index2, current_index)。这对于处理海量文件至关重要。
进阶问题:高效处理多个查询
这个 O(n) 时间、O(1) 空间的解决方案非常适合一次性的查询。但如果你需要对同一个大文件查询许多不同词对(比如 (w1, w2), (w3, w4) 等)的最小距离呢?为每个查询重新扫描整个文件 O(n) 次会非常低效。
在这种情况下,进行一次预处理是合理的,用一次性的工作量和可能更多的空间来换取后续查询的速度:
-
预处理(一次性扫描):
- 扫描整个文件一次。
- 构建一个索引(例如,HashMap<String, List<Integer>>)。其中,键是文件中的唯一单词,值是该单词出现的所有位置(索引)的排序列表。
- 这一步需要 O(N) 的时间(N = 总单词数),最坏情况下需要 O(N) 的空间(如果很多单词都是唯一的)。如果词汇量巨大且文件非常庞大,这个索引本身可能太大而无法放入内存。
-
查询(快速):
- 当被问及 w1 和 w2 之间的最小距离时:
- 从预计算的索引中检索出 w1 的排序索引列表 listA 和 w2 的排序索引列表 listB(HashMap 查找平均时间 O(1))。
- 使用双指针技术来查找 listA 中元素与 listB 中元素之间的最小绝对差。这需要 O(Length(listA) + Length(listB)) 的时间,通常远快于 O(N)。
多查询场景的权衡:
- 优点: 后续查询速度快得多。
- 缺点: 需要一个可能耗时且占用大量内存的预处理步骤来构建索引。索引可能大到无法放入内存,需要外部存储解决方案(如数据库索引或专门的磁盘数据结构),增加了复杂性。
结论
在庞大的文本文件中查找两个单词的最短距离,展示了一个经典的大数据问题解决模式。对于单次查询,一个巧妙的 O(n) 时间、O(1) 空间算法使我们能够顺序处理数据,而无需存储大型中间结构。然而,如果预期会有频繁的查询,投入资源进行预处理以构建索引(尽管可能占用大量内存)可以极大地加速单个查询,这突显了算法设计中时间与空间的关键权衡。
相关文章:
海量文本中的词语距离:在 O(n) 时间内找到最近的词对
想象一个巨大的日志文件、一部鸿篇巨著或者网络爬虫抓取的数据——它们可能达到 TB 级别。现在,假设你需要找出两个特定的词(比如 词语1 和 词语2)在这段庞大文本中出现时,彼此“靠得最近”的距离是多少。 挑战: …...
TextCNN 模型文本分类实战:深度学习在自然语言处理中的应用
在自然语言处理(NLP)领域,文本分类是研究最多且应用最广泛的任务之一。从情感分析到主题识别,文本分类技术在众多场景中都发挥着重要作用。最近,我参与了一次基于 TextCNN 模型的文本分类实验,从数据准备到…...
前台调用接口的方式及速率对比
一、引言 在现代 Web 开发中,前台与后台的数据交互至关重要,而调用接口是实现这一交互的关键手段。不同的接口调用方式在速率上可能存在差异,这会影响用户体验和应用性能。本文将详细介绍几种常见的前台调用接口方式,并对它们的速…...
高级java每日一道面试题-2025年4月21日-基础篇[反射篇]-如何使用反射获取一个类的所有方法?
如果有遗漏,评论区告诉我进行补充 面试官: 如何使用反射获取一个类的所有方法? 我回答: 在Java中,反射是一种强大的机制,允许程序在运行时检查或“反射”自身,从而动态地操作类、字段、方法和构造函数等。这在需要动态调用方法…...
tomcat集成redis实现共享session
中间件:Tomcat、Redis、Nginx jar包要和tomcat相匹配 jar包:commons-pool2-2.2.jar、jedis-2.5.2.jar、tomcat-redis-session-manage-tomcat7.jar 配置Tomcat /conf/context.xml <?xml version1.0 encodingutf-8?> <!--Licensed to the A…...
2.6 递归
递归 特性: >.一递一归 >.终止条件 一般为:0 1 -1 #测试函数的返回值为函数 def test_recursion():return test_recursion() print(test_recursion()) RecursionError: maximum recursion depth exceeded #案例:计算 …...
鸿蒙应用开发:如何修改APP名称与APP的图标
如何修改APP的名称? 修改APP的名称需要修改entry/src/main/resources/base/element/string.json文件 将EntryAbility_label的value修改为“需要修改成的名字”。 文件目录: 代码修改: {"string": [{"name": "modu…...
AI 模型在前端应用中的典型使用场景和限制
典型使用场景 1. 智能表单处理 // 使用TensorFlow.js实现表单自动填充 import * as tf from tensorflow/tfjs; import { loadGraphModel } from tensorflow/tfjs-converter;async function initFormPredictor() {// 加载预训练的表单理解模型const model await loadGraphMod…...
前端性能优化全攻略:JavaScript 优化、DOM 操作、内存管理、资源压缩与合并、构建工具及性能监控
1 为什么需要性能优化? 1.1 性能优化的核心价值:用户体验与业务指标 性能优化不仅是技术层面的追求,更是直接影响用户体验和业务成败的关键因素。 用户体验(UX): 响应速度:用户期望页面加载时…...
使用 acme.sh 自动更新 SSL 证书的指南
上篇文章讲了一下 如何利用acme.sh来申请ssl,但没有讲3个月到期后 如何续期,续期的时候会碰到什么问题? 1.查看当前的当前签发域名的到期时间 acme.sh list 2.重新申请ssl acme.sh --issue --dns dns_namesilo -d xxx.ai -d *.xxx.ai --dns…...
查看Spring Boot项目所有配置信息的几种方法,包括 Actuator端点、日志输出、代码级获取 等方式,附带详细步骤和示例
以下是查看Spring Boot项目所有配置信息的几种方法,包括 Actuator端点、日志输出、代码级获取 等方式,附带详细步骤和示例: 1. 使用Spring Boot Actuator Actuator是Spring Boot提供的监控和管理工具,包含/configprops端点可查看…...
C++与C
文章目录 C与C命令空间const关键字new/delete表达式引用(重点)概念引用的本质引用的使用场景引用作为函数的参数引用作为函数的返回值 总结 强制转换函数重载extern "C"默认参数 bool类型inline(内联)函数异常处理&…...
Nginx中间件的解析
目录 一、Nginx的核心架构解析 二、Nginx的典型应用场景 三、Nginx的配置优化实践 四、Nginx的常见缺陷与漏洞 一、Nginx的核心架构解析 事件驱动与非阻塞IO模型 Nginx采用基于epoll/kq等系统调用的事件驱动机制,通过异步非阻塞方式处理请求,…...
Ansys Zemax | 在 MATLAB 中使用 ZOS-API 的技巧
附件下载 联系工作人员获取附件 本文将介绍一些在MATLAB中使用 ZOS-API 的技巧,以提高您的工作效率并充分利用 ZOS-API 的功能。 简介 OpticStudio开发了应用程序接口 (API) ,用户可以使用API与不同的脚本环境进行连接和交互。使用API,用…...
js 生成pdf 并上传文件
js 生成pdf 并上传文件 使用 JsPDF html2Canvas 代码直接使用 注意注释 import JsPDF from jspdf import html2Canvas from html2canvas // 上传文件的方法 import { handleUploadImage } from /utils/uploadQuillEditdownPDF() {// 要打印元素的idconst cloneDom document.…...
刷刷刷刷刷sql题
NSSCTF 【SWPUCTF 2021 新生赛】easy_sql 这题虽然之前做过,但为了学习sql,整理一下就再写一次 打开以后是杰哥的界面 注意到html网页标题的名称是 “参数是wllm” 那就传参数值试一试 首先判断注入类型(数字型或字符型) 传1 …...
JavaScript 中的 this 及 this 指向的改变方法
在 JavaScript 的世界里,this是一个既强大又容易让人困惑的概念。它的指向在不同的函数调用场景下会动态变化,而call()、apply()和bind()这三个方法则为我们提供了精确控制this指向的能力。本文将从基础概念出发,结合具体案例,带大…...
安卓模拟器绕过检测全解析:雷电、MuMu、蓝叠、逍遥、夜神与WSA完整指南
安卓模拟器绕过检测全解析:雷电、MuMu、蓝叠、逍遥、夜神与WSA完整指南 模拟器过检测合集雷电mumu蓝叠逍遥夜神WSA 转自风车2025 前言 随着手机游戏和应用的普及,越来越多的用户选择在PC上通过模拟器来运行安卓应用。然而,许多应用和游戏为…...
VSCode中安装GitGraph
前提是先安装git,官方下载地址:Git - Downloads 1. 在VSCode中安装GitGraph插件 2. 文件->首选项->设置,打开设置界面,在设置界面搜索git path 3. 打开配置文件配置git安装路径: 4. 打开源代码管理,…...
StartAI「万物迁移」功能设计师实操教程:模特换衣场景应用
一、功能核心优势解析 智能识别与场景融合 基于迁移学习算法,精准定位服装轮廓(支持复杂材质如蕾丝、镂空设计),自动匹配目标场景的光影方向与色温。 效率革命 传统PS手动换衣需2-3小时,使用万物迁移可压缩至2-5分…...
【RK3588 嵌入式图形编程】-SDL2-扫雷游戏-放置标记
放置标记 文章目录 放置标记1、概述2、更新Globals.h3、放置标记4、渲染标记5、标记计数6、完整代码7、改进建议8、总结在本文中,我们实现标记放置和跟踪以完成的扫雷游戏项目。 1、概述 在我们扫雷游戏文章系列的最后部分中,我们将添加玩家在可疑的地雷位置放置标记的功能。…...
【Python】Selenium切换网页的标签页的写法(全!!!)
在使用selenium做网站爬取测试的时候,我们经常会遇到一些需要点击的元素,才能点击到我们想要进入的页面, 于是我们就要模拟 不断地 点点点击 鼠标的样子。 这个时候网页上就会有很多的标签页,你的浏览器网页标签栏 be like: 那…...
Spring Boot多环境配置详解
一、为什么需要多环境配置 在实际项目开发中,我们通常需要将应用部署到不同的环境中,比如: 开发环境(dev) - 开发人员本地开发调试使用测试环境(test) - 测试人员功能测试使用生产环境&#x…...
进阶篇 第 6 篇:时间序列遇见机器学习与深度学习
进阶篇 第 6 篇:时间序列遇见机器学习与深度学习 (图片来源: Tara Winstead on Pexels) 在上一篇中,我们探讨了如何通过精心的特征工程,将时间序列预测问题转化为机器学习可以处理的监督学习任务。我们学习了如何创建滞后特征、滚动统计特征…...
RHCE 作业二(密钥登录实验)
1.进入ssh主配置文件恢复配置: 2.vim进入ssh子文件夹查看配置 3.重启服务 /etc/ssh/ key结尾或者.pub结尾的文件全部都是密钥 sshd_confg.d目录是服务的子配置文件 ssh_confg.d目录是客户端你的子配置文件 ~/.ssh/ 是当前用户的配置文件 4.服务器和客户端分别…...
android contentProvider 踩坑日记
写此笔记原因 学习《第一行代码》到第8章节实现provider时踩了一些坑,因此记录下来给后来人和自己一个提示,仅此而已。 包含内容 Sqlite数据库CURD内容provider界面provider项目中书籍管理provider实现逻辑用adb shell确认providercontentResolver接收…...
K8s:概念、特点、核心组件与简单应用
一、引言 在当今云计算和容器技术蓬勃发展的时代,Kubernetes(简称 K8s)已成为容器编排领域的事实标准。它为管理容器化应用提供了高效、可靠的解决方案,极大地简化了应用的部署、扩展和运维过程。无论是小型初创公司还是大型企业…...
基于表面肌电信号sEMG的手势识别——以Ninapro DB1数据集使用CNN网络识别为例
完整代码获取 评论区或者私信留邮箱 接论文辅导!中文核心辅导!SCI三四区辅导! 可接模型改进 任务描述 表面肌电信号( sEMG ) 是一种生物电信号,存在于肌肉神经。 当大脑下达肌肉动作指令,肌肉会产生控制信号ÿ…...
黑盒测试——等价类划分法实验
任务: 设某程序有两个输入:整数x1和整数x2,计算Yf(x1,x2)。x1和x2的取值范围为1< x1<500,1< x2<500。当x1在[1,200) 取值且x2在[1,300] 取值时,Yf(x1,x2) x1x2;当x1在[200,500] 取值且x2在[1,300] 取值时&…...
深度学习4月22笔记
1、过拟合与欠拟合 在训练深层神经网络时,由于模型参数较多,在数据量不足时很容易过拟合。而正则化技术主要就是用于防止过拟合,提升模型的泛化能力(对新数据表现良好)和鲁棒性(对异常数据表现良好)。 1. 概念认知 …...
【MySQL数据库入门到精通-03 数据类型及案列】
文章目录 一、三类数据类型二、数值类型三、字符串类型四、日期时间类型五、日期时间类型 一、三类数据类型 MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。 二、数值类型 比如: 1). 年龄字段 – 不会出现负数…...
【机器学习】决策树算法中的 “黄金指标”:基尼系数深度剖析
一、基尼系数的基本概念 基尼系数(Gini Impurity)在决策树分类算法中,是用于衡量数据纯度的重要指标,与信息熵有着相似的功能。在样本集合里,基尼系数代表随机选取一个样本时,该样本被分错的概率 。假设一…...
植被参数遥感反演技术革命!AI+Python支持向量机/随机森林/神经网络/CNN/LSTM/迁移学习在植被参数反演中的实战应用与优化
在全球气候变化与生态环境监测的重要需求下,植被参数遥感反演作为定量评估植被生理状态、结构特征及生态功能的核心技术,正面临诸多挑战。随着遥感技术的发展,数据复杂度不断提升,模型精度的要求也越来越高。同时,多源…...
【AI】SpringAI 第四弹:接入本地大模型 Ollama
Ollama 是一个开源的大型语言模型服务工具。它的主要作用是帮助用户快速在本地运行大模型, 简化了在 Docker 容器内部署和管理大语言模型(LLM)的过程。 1. 确保Ollama 已经启动 # 查看帮助文档 ollama -h# 自动下载并启动 ollama run deeps…...
C# MP3 伴奏
使用建议: 参数调节指南: 低频人声残留:降低CenterFrequency(800-1500Hz) 高频人声残留:提高CenterFrequency(2500-3500Hz) 消除力度不足:提高EliminationStrength(0.9-1.0) 伴奏失真:降低EliminationSt…...
【springsecurity oauth2授权中心】将硬编码的参数提出来放到 application.yml 里 P3
在application.yml里添加配置 application.yml oauth2:client:id: clientsecret: secretauthentication-method: client_secret_basicgrant-types: authorization_code,refresh_tokenredirect-uris:- http://localhost:8081/login/oauth2/code/client- http://localhost:8081…...
【Ansible】批量管理 Windows自动化运维
一,前期准备 1,控制端(Linux)的要求 Ansible可以在安装了Python 2(2.7版)或Python 3(3.5及更高版本)的任何机器上运行。控制端计算机不支持Windows。 2,客户端&#x…...
AES-128、AES-192、AES-256 简介
AES(Advanced Encryption Standard) 是一种广泛使用的对称加密算法,由美国国家标准与技术研究院(NIST)于2001年正式采纳,用于替代旧的 DES 和 3DES。AES 基于 Rijndael 算法,支持 128 位、192 位…...
osxcross 搭建 macOS 交叉编译环境
1. osxcross 搭建 macOS 交叉编译环境 1. osxcross 搭建 macOS 交叉编译环境 1.1. 安装依赖1.2. 安装 osxcross 及 macOS SDK 1.2.1. 可能错误 1.3. 编译 cmake 类工程1.4. 编译 configure 类工程1.5. 单文件编译及其他环境编译1.6. 打包成 docker 镜像1.7. 使用 docker 编译 …...
联通余额查询接口
接口名称 1) 请求地址 https://ucbss.10010.cn/npfweb/NpfWeb/Mustpayment/getMustpayment?number13112345586&province051&commonBean.phoneNo13112345586&channelType101https://ucbss.10010.cn/npfweb/NpfWeb/Mustpayment/getMustpayment?number13112345586&…...
Python 设计模式:桥接模式
1. 什么是桥接模式? 桥接模式是一种结构型设计模式,它通过将抽象部分与其实现部分分离,使得两者可以独立变化。桥接模式的核心思想是将抽象和实现解耦,从而提高系统的灵活性和可扩展性。 桥接模式的核心思想是将一个类的接口与其…...
7.6 GitHub Sentinel后端API实战:FastAPI高效集成与性能优化全解析
GitHub Sentinel Agent 用户界面设计与实现:后端 API 集成 关键词:前后端分离架构、RESTful API 设计、数据序列化、命令行工具开发、集成测试 后端 API 集成关键技术实现 本阶段需要完成前端界面与后端服务的无缝对接,实现以下核心功能: #mermaid-svg-FFnzT13beWV52dtx …...
Smart AI:在AI浪潮中崛起的智能NFT生态革命者
技术引领,智能进化:Smart AI强势登场 在全球AI技术浪潮席卷之际,由澳大利亚顶尖技术团队倾力打造的Smart AI平台横空出世,以其革命性的NFT智能进化系统,正在彻底重塑数字资产的未来图景。Smart AI不仅是一个平台&…...
Linux——基于socket编程实现简单的Tcp通信
前言1:想要实现一个简单的Tcp通信不难,对于初学者而言,难点在于使用了大量未曾接触过的函数调用,所以本篇重点在于详解每部分代码中相关函数的功能。 1. 简单认识一下TCP传输 TCP通信协议是面向字节流的、可靠的、有连接的传输&a…...
STL C++详解——priority_queue的使用和模拟实现 堆的使用
priority_queue的使用 std::priority_queue 是 C 标准模板库(STL)中的一个容器适配器,提供了优先队列的功能。 优先队列:是一种特殊的队列,队列中的每个元素都有与之关联的优先级,优先级高的元素会先出队…...
是否可以使用非被动 S4P 文件进行反嵌?
AEDT 电路去嵌入算法使用假定线性时不变 (LTI) 行为的转换。如果非被动 S 参数块不是 LTI,则倒数函数将无法按预期工作。...
GAEA的技术优势:分层加密与去中心化数据治理
GAEA采用分层加密架构,将用户数据分为三个层级: 基础层(链上数据):用户身份哈希、资源贡献记录等核心数据通过零知识证明(ZK-SNARKs)进行链上加密,确保不可篡改和匿名性。 情感层…...
使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第九讲)
这一期讲解GUI_guider中的容器控件的使用以及相关函数,容器本质上是具有布局和自动调整大小功能的基本对象 ,通常用来装载其他子控件。 打开上一期的项目,在工具栏中选中容器控件拖拽到界面中,具体如图所示: 容器默认…...
SparkStreaming概述
SparkStreaming主要用于流式计算,处理实时数据。 DStream是SparkStreaming中的数据抽象模型,表示随着时间推移收到的数据序列。 SparkStreaming支持多种数据输入源(如Kafka、Flume、Twitter、TCP套接字等)和数据输出位置…...
LeetCode---整数反转
整数反转 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 示例 示例 1: 输入:x 123 输出:321 示例 2…...