KY46 单词替换

文章介绍了如何使用C语言编写AC代码,实现输入字符串中特定单词的替换功能,通过示例展示了如何在给定的字符串s中找到单词a并将其替换为b。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述:
输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
输入描述:
每组数据输入包括3行,第1行是包含多个单词的字符串s,第2行是待替换的单词a(长度<=100),第3行是a将被替换的单词b(长度<=100)。s, a, b 最前面和最后面都没有空格。
输出描述:
每个测试数据输出只有 1 行, 将s中所有单词a替换成b之后的字符串。
示例1

输入:
You want someone to help you
You
I

输出:
I want someone to help you

知识点: 字符串
AC代码:

#include <stdio.h>
#include <string.h>

int main() {
    char s[105], a[105], b[105];
    char t[105];

    while(gets(s)) {
        scanf("%s%s", a, b);
        for(int i = 0; i < strlen(s); i ++) {
            int j = 0;
            while(s[i] != ' ' && s[i] != '\0')
                t[j ++] = s[i ++];
            t[j] = '\0';
            if(strcmp(t, a) == 0)
                printf("%s", b);
            else
                printf("%s", t);
            printf(" ");
        }

    }
    return 0;
}
读取这个Panskou zahradou 101 少一个8 实际是Panskou zahradou 1018 还有这个L Technoloav Limited 实际上是luxsantechnologylimited/** * OCR识别图片内容 */ private String extractImageText(MultipartFile file) { try (InputStream is = file.getInputStream()) { BufferedImage image = ImageIO.read(is); if (image == null) { return MessageUtils.message("Image.parsing.failed"); } BufferedImage processedImage = preprocessImage(image); //OCR识别 String result = tesseract.doOCR(processedImage); result = postProcess(result); result = result.replaceAll("\\s+", " ").trim(); System.out.println("图片内容:\n" + result); return result; } catch (Exception e) { e.printStackTrace(); return MessageUtils.message("file.read.picture.error"); } } private BufferedImage preprocessImage(BufferedImage original) { // 灰度化 BufferedImage gray = new BufferedImage(original.getWidth(), original.getHeight(), BufferedImage.TYPE_BYTE_GRAY); Graphics g = gray.getGraphics(); g.drawImage(original, 0, 0, null); g.dispose(); // 降噪 BufferedImage denoised = denoiseImage(gray); // 二值化 BufferedImage binary = new BufferedImage(original.getWidth(), original.getHeight(), BufferedImage.TYPE_BYTE_BINARY); g = binary.getGraphics(); g.drawImage(denoised, 0, 0, null); g.dispose(); // 锐化 BufferedImage sharpened = sharpenImage(binary); // 放大2倍 BufferedImage resized = new BufferedImage(original.getWidth() * 2, original.getHeight() * 2, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = resized.createGraphics(); g2d.setRenderingHint(java.awt.RenderingHints.KEY_INTERPOLATION, java.awt.RenderingHints.VALUE_INTERPOLATION_BILINEAR); g2d.drawImage(sharpened, 0, 0, resized.getWidth(), resized.getHeight(), null); g2d.dispose(); return resized; } private BufferedImage denoiseImage(BufferedImage image) { int width = image.getWidth(); int height = image.getHeight(); BufferedImage denoised = new BufferedImage(width, height, image.getType()); for (int y = 1; y < height - 1; y++) { for (int x = 1; x < width - 1; x++) { int[] neighbors = new int[8]; neighbors[0] = image.getRGB(x - 1, y - 1); neighbors[1] = image.getRGB(x, y - 1); neighbors[2] = image.getRGB(x + 1, y - 1); neighbors[3] = image.getRGB(x - 1, y); neighbors[4] = image.getRGB(x + 1, y); neighbors[5] = image.getRGB(x - 1, y + 1); neighbors[6] = image.getRGB(x, y + 1); neighbors[7] = image.getRGB(x + 1, y + 1); Arrays.sort(neighbors); denoised.setRGB(x, y, neighbors[4]); } } return denoised; } private BufferedImage sharpenImage(BufferedImage image) { int width = image.getWidth(); int height = image.getHeight(); BufferedImage sharpened = new BufferedImage(width, height, image.getType()); int[][] kernel = { {-1, -1, -1}, {-1, 9, -1}, {-1, -1, -1} }; for (int y = 1; y < height - 1; y++) { for (int x = 1; x < width - 1; x++) { int sumR = 0, sumG = 0, sumB = 0; for (int ky = -1; ky <= 1;ky++) { for (int kx = -1; kx <= 1; kx++) { int rgb = image.getRGB(x + kx, y + ky); int r = (rgb >> 16) & 0xff; int g = (rgb >> 8) & 0xff; int b = rgb & 0xff; sumR += r * kernel[ky + 1][kx + 1]; sumG += g * kernel[ky + 1][kx + 1]; sumB += b * kernel[ky + 1][kx + 1]; } } sumR = Math.min(255, Math.max(0, sumR)); sumG = Math.min(255, Math.max(0, sumG)); sumB = Math.min(255, Math.max(0, sumB)); int newRgb = (sumR << 16) | (sumG << 8) | sumB; sharpened.setRGB(x, y, newRgb); } } return sharpened; }我的代码和配置 @PostConstruct public void initOcrEngine() { tesseract = new Tesseract(); //语言包路径和支持语言 tesseract.setDatapath("D:\\maven_use\\lingxi-lhc\\lingxi-ai-extend\\lingxi-ai-comparison\\src\\main\\resources\\tessdata"); tesseract.setLanguage("eng+chi_sim"); tesseract.setPageSegMode(6); //自动页面分割 tesseract.setOcrEngineMode(1); //LSTM引擎 tesseract.setVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/():-. "); // 设置白名单字符 }
07-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值