V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  szdosar  ›  全部回复第 10 页 / 共 33 页
回复总数  654
1 ... 6  7  8  9  10  11  12  13  14  15 ... 33  
224 天前
回复了 szdosar 创建的主题 Android 收到不良林的启发,让手机当充当 4G 主路由
好吧,我的标题就有俩错别字,正确的应该是 [受到不良林的启发,几行代码让手机充当 4G 主路由]
@11dad 没,我就用谷歌官方的安卓 9.0
@11dad #16 谢谢提示,我点击测试按钮测试了一下电池闲置模式,几分钟都没有出结果,是不是意味着内核不支持啊?
@11dad 这是什么模式,pixel 倒是有一个省电模式
@chocolateyk11 哈哈,你说的对。主要是我的场景是必须连接 USB 线使用,没办法才出此下策。
@asen1987 谢谢,这两天我研究一下。
@iminto
@yhm2046
感谢回复,现在是 pixel 手机,且打算自动化处理,暂时考虑用 1 楼的方案。
@efcndi
明白了
谢谢你提供的信息,具体哪一代呢?
229 天前
回复了 blueboyggh 创建的主题 Python Python 如何提取两个字符串中的相同部分?
可以改进的,返回的子串之间有相互包含的情况。我们在添加子串到结果集之前进行检查,可以检查新找到的子串是否包含在结果集中的任何子串中,或者结果集中的任何子串是否包含在新找到的子串中。
fix 源码 https://pastebin.com/raw/6aKqeUrP
229 天前
回复了 blueboyggh 创建的主题 Python Python 如何提取两个字符串中的相同部分?
不要执着于用迭代操作,我们来分析一下。
##itertools 是一个非常强大的库,它提供了很多用于处理迭代操作的工具。但是,对于特定的问题,直接的算法可能会更加高效。
##在我们的情境中,我们要找的是两个字符串之间的所有公共子串。使用 itertools 可能会涉及生成所有可能的子串组合,然后再进行比较,这在某些情况下可能会导致不必要的计算。
##而我们使用的滑动窗口方法是基于以下观察结果的:
##如果两个字符串在某个位置有一个公共字符,那么我们可以尝试扩展这个匹配,直到找到一个公共子串或匹配失败为止。
##通过这种方式,我们可以立即找到一个公共子串,而不需要生成和比较所有可能的子串组合。
##因此,对于这个特定的问题,滑动窗口方法可能会比使用 itertools 更加高效。但这并不意味着 itertools 不是一个有用的库。对于其他类型的问题,itertools 可能会提供更简洁、更高效的解决方案。
##以下使用滑动窗口方法
##find_common_substrings_huadong
源代码效率可大幅提高:
https://pastebin.com/raw/Qfr31L8a
229 天前
回复了 blueboyggh 创建的主题 Python Python 如何提取两个字符串中的相同部分?
我处理了一下你这个代码的缩进 https://pastebin.com/raw/6mEqdaZG
输出是:
'''
是个好日子,
[Finished in 131ms]
'''
229 天前
回复了 blueboyggh 创建的主题 Python Python 如何提取两个字符串中的相同部分?
https://drive.google.com/file/d/1-Kv19SR2HITSiWnzs6XzI_JqyqcjpK2w/view?usp=sharing
- - - - - - - - - - - - - - -
感谢指点,我也就是半桶水,上面这个链接是源码。
230 天前
回复了 blueboyggh 创建的主题 Python Python 如何提取两个字符串中的相同部分?
方法有不是只有一套,对吧?
'''
#find_common_substrings_excel
#读取 Excel 文件,使用 pandas 库。确保你已经安装了 pandas 和 xlrd 库。可以使用以下命令进行安装:pip install pandas xlrd openpyxl
import pandas as pd

def find_common_substrings(s1, s2, min_length=4):
# 创建一个二维数组,用于存储公共子串的长度
dp = [[0] * (len(s2) + 1) for _ in range(len(s1) + 1)]
longest = 0
common_substrings = set()

for i in range(1, len(s1) + 1):
for j in range(1, len(s2) + 1):
if s1[i - 1] == s2[j - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
if dp[i][j] >= min_length:
common_substrings.add(s1[i - dp[i][j]:i])
else:
dp[i][j] = 0

return list(common_substrings)

# 添加一个函数来读取 Excel 文件的内容
def read_excel_content(filename):
# 读取 Excel 文件的第一个工作表
df = pd.read_excel(filename, sheet_name=0)
# 获取第一列的内容并将其转换为字符串
return df.iloc[:, 0].astype(str).str.cat(sep=' ')

# 使用上面的函数来读取 Excel 文件的内容
s1 = read_excel_content('file1.xlsx')
s2 = read_excel_content('file2.xlsx')

# 使用 find_common_substrings 函数来对比这两个文件的内容
print(find_common_substrings(s1, s2))
'''
230 天前
回复了 blueboyggh 创建的主题 Python Python 如何提取两个字符串中的相同部分?
你把要比较的内容放在两个文本文件中试试:
'''
def find_common_substrings(s1, s2, min_length=8):
# 创建一个二维数组,用于存储公共子串的长度
dp = [[0] * (len(s2) + 1) for _ in range(len(s1) + 1)]
longest = 0
common_substrings = set()

for i in range(1, len(s1) + 1):
for j in range(1, len(s2) + 1):
if s1[i - 1] == s2[j - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
if dp[i][j] >= min_length:
common_substrings.add(s1[i - dp[i][j]:i])
else:
dp[i][j] = 0

return list(common_substrings)

# 添加一个函数来读取文件内容
def read_file_content(filename):
with open(filename, 'r', encoding='utf-8') as file:
return file.read()

# 使用上面的函数来读取 file1.txt 和 file2.txt 的内容
s1 = read_file_content('file1.txt')
s2 = read_file_content('file2.txt')

# 使用 find_common_substrings 函数来对比这两个文件的内容
print(find_common_substrings(s1, s2))
'''
230 天前
回复了 blueboyggh 创建的主题 Python Python 如何提取两个字符串中的相同部分?
你改一下 min_length=9 ,结果就是
['中了 500 万彩票', '中了 500 万彩']
[Finished in 133ms]
所以是不是这个的原因,长度问题?
230 天前
回复了 asuraa 创建的主题 宽带症候群 杭州联通端口全被屏蔽
另外,你的超时毫秒改成 400-500 毫秒看看?
230 天前
回复了 asuraa 创建的主题 宽带症候群 杭州联通端口全被屏蔽
我怀疑可能是由于线程并发导致的,
当并发扫描大量端口时,
某些端口的结果可能会被其他线程的输出所覆盖,
或者由于某种原因被忽略。
你试试把线程数降低点,
比如 5 线程?
230 天前
回复了 blueboyggh 创建的主题 Python Python 如何提取两个字符串中的相同部分?
试试这个,运行结果是:['是个好日子,', '中了 500', '中了 500 万彩票', '中了 500 ', '是个好日', '中了 500 万', '中了 50', '是个好日子', '中了 5', '中了 500 万彩']
[Finished in 89ms]
```
def find_common_substrings(s1, s2, min_length=4):
# 创建一个二维数组,用于存储公共子串的长度
dp = [[0] * (len(s2) + 1) for _ in range(len(s1) + 1)]
longest = 0
common_substrings = set()

for i in range(1, len(s1) + 1):
for j in range(1, len(s2) + 1):
if s1[i - 1] == s2[j - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
if dp[i][j] >= min_length:
common_substrings.add(s1[i - dp[i][j]:i])
else:
dp[i][j] = 0

return list(common_substrings)

# 示例
s1 = "我今天特别开心啊,因为今天是个好日子,我中了 500 万彩票。"
s2 = "今天不是个好日子,因为邻居中了 500 万彩票,我今天不开心。"
print(find_common_substrings(s1, s2))
```
231 天前
回复了 Blabber9125 创建的主题 程序员 ss 回家如何访问局域网
@Blabber9125
你需要管理员权限运行 v2rayN 6.x 才能拨动 Tun 模式按钮,在视窗的左下方。
-------------
tun 模式设置是什么样的呢,我打开了也不行
1 ... 6  7  8  9  10  11  12  13  14  15 ... 33  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5398 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 08:25 · PVG 16:25 · LAX 01:25 · JFK 04:25
Developed with CodeLauncher
♥ Do have faith in what you're doing.