华为OD机试 - 最长子字符串的长度(一) (Python C C++ JavaGo JS PHP)

news2024/11/25 7:13:16

题目描述

给定一个字符串s,将其视为环形,要求找出其中出现偶数次的最长子字符串的长度。

输入描述

输入一个字符串s。

输出描述

输出一个整数,表示出现偶数次的最长子字符串的长度。

示例

在这里插入图片描述

解析题目

本题要求在给定的字符串中找出出现偶数次的最长子字符串的长度。为了解决这个问题,我们可以使用以下策略:

  1. 遍历整个字符串,统计每个字符出现的次数。
  2. 从字符串的起始位置开始,检查以当前位置为起点的子字符串中每个字符出现的次数是否为偶数。如果是,则更新最长偶数次字符的子字符串的长度。
  3. 重复步骤2,直到遍历完整个字符串。
  4. 返回最长偶数次字符的子字符串的长度。

Python代码实现

# 输入获取
s = input()
 
 
# 算法入口
def getResult():
    # s中'o'的个数
    zeroCount = 0
 
    for c in s:
        if c == 'o':
            zeroCount += 1
 
    if zeroCount % 2 == 0:
        return len(s)
    else:
        return len(s) - 1
 
 
# 算法调用
print(getResult())

C代码实现

#include <stdio.h>

int getResult() { // 定义一个函数来计算结果
   int zeroCount = 0; // 定义一个变量来记录o的个数
   char c; // 定义一个变量来存储当前字符

   for (c = *s; c != '\0'; c = *s++) { // 遍历字符串中的每个字符
       if (c == 'o') { // 如果当前字符是o
           zeroCount++; // o的个数加1
       }
   }

   if (zeroCount % 2 == 0) { // 如果o的个数是偶数
       return strlen(s); // 返回字符串长度
   } else {
       return strlen(s) - 1; // 否则返回字符串长度减1
   }
}

int main() {
   char *s; // 定义一个变量来存储字符串

   s = (char *)malloc(64); // 为字符串分配内存
   fgets(s, 64, stdin); // 从标准输入读取一行字符串
   s[strcspn(s, "\n")] = '\0'; // 去掉字符串末尾的换行符

   printf("%d", getResult()); // 调用函数计算结果并输出

   free(s); // 释放字符串内存
   return 0; // 程序结束
}

C++代码实现

#include <iostream>
#include <string>

int getResult(const std::string& s) { // 定义一个函数来计算结果
    int zeroCount = 0; // 定义一个变量来记录o的个数
    char c; // 定义一个变量来存储当前字符

    for (c = s[0]; c != '\0'; c = s[++i]) { // 遍历字符串中的每个字符
        if (c == 'o') { // 如果当前字符是o
            zeroCount++; // o的个数加1
        }
    }

    if (zeroCount % 2 == 0) { // 如果o的个数是偶数
        return s.length(); // 返回字符串长度
    } else {
        return s.length() - 1; // 否则返回字符串长度减1
    }
}

int main() {
    std::string s; // 定义一个变量来存储字符串

    std::cin >> s; // 从标准输入读取一行字符串

    std::cout << getResult(s) << std::endl; // 调用函数计算结果并输出

    return 0; // 程序结束
}

Java代码实现

import java.util.Scanner;

public class Main {
   public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in); // 创建一个Scanner对象从标准输入读取数据
       String input = scanner.nextLine(); // 读取一行字符串
       int result = getResult(input); // 调用getResult函数计算结果
       System.out.println(result); // 输出结果
   }

   public static int getResult(String s) { // 定义一个函数计算结果
       int zeroCount = 0; // 定义一个变量记录o的个数
       char c; // 定义一个变量存储当前字符

       for (int i = 0; i < s.length(); i++) { // 遍历字符串中的每个字符
           c = s.charAt(i); // 获取当前字符
           if (c == 'o') { // 如果当前字符是o
               zeroCount++; // o的个数加1
           }
       }

       return (zeroCount % 2 == 0) ? s.length() : s.length() - 1; // 如果o的个数是偶数返回字符串长度,否则返回字符串长度减1
   }
}

Go代码实现

package main

import (
	"fmt"
	"strings"
)

func getResult(s string) int {
	zeroCount := 0
	for _, c := range s {
		if c == 'o' {
			zeroCount++
		}
	}
	if zeroCount%2 == 0 {
		return len(s)
	} else {
		return len(s) - 1
	}
}

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Scan()
	input := scanner.Text()
	result := getResult(input)
	fmt.Println(result)
}

PHP代码实现


<?php

function getResult() {
    $zeroCount = 0;
    $c = '';

    for ($c = $s[0]; $c !=== false; $c = $s[0]) {
        if ($c === 'o') {
            $zeroCount++;
        }
    }

    if ($zeroCount % 2 === 0) {
        return strlen($s);
    } else {
        return strlen($s) - 1;
    }
}

$s = "";
fgets($s, 64, STDIN);
$s = rtrim($s, "\n");

echo getResult();

?>

JS代码实现

function getResult() {
    let zeroCount = 0;
    let c;

    for (c = s[0]; c !== undefined; c = s[s.length - 1]) {
        if (c === 'o') {
            zeroCount++;
        }
    }

    if (zeroCount % 2 === 0) {
        return s.length;
    } else {
        return s.length - 1;
    }
}

function main() {
    let s = "";

    s = readline();
    s = s.trim();

    console.log(getResult());
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1444761.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV入门:图像处理的基石

在数字图像处理领域&#xff0c;OpenCV&#xff08;开源计算机视觉库&#xff09;是一个不可或缺的工具。它包含了一系列强大的算法和函数&#xff0c;使得开发者可以轻松地处理图像和视频数据。本文将带你走进OpenCV的世界&#xff0c;了解其基本概念和常见应用。 1. OpenCV简…

Java 集合、迭代器

Java 集合框架主要包括两种类型的容器&#xff0c;一种是集合&#xff08;Collection&#xff09;&#xff0c;存储一个元素集合&#xff0c;另一种是图&#xff08;Map&#xff09;&#xff0c;存储键/值对映射。Collection 接口又有 3 种子类型&#xff0c;List、Set 和 Queu…

【EAI 015】CLIPort: What and Where Pathways for Robotic Manipulation

论文标题&#xff1a;CLIPort: What and Where Pathways for Robotic Manipulation 论文作者&#xff1a;Mohit Shridhar1, Lucas Manuelli, Dieter Fox1 作者单位&#xff1a;University of Washington, NVIDIA 论文原文&#xff1a;https://arxiv.org/abs/2109.12098 论文出处…

sheng的学习笔记-docker部署springboot

部署文章目录&#xff1a;目录 docker部署&#xff0c;原理&#xff0c;命令&#xff0c;可以参考&#xff1a;docker原理图&#xff0c;部署&#xff0c;命令 目录 将springboot部署到docker中 遇到过的问题&#xff1a; pom配置 操作步骤 生成jar 构建镜像 查看镜像d…

C语言之预处理详解

目录 1. 预定义符号2. #define定义常量3. #define定义宏练习 4. 带有副作用的宏参数5. 宏替换的规则6. 宏函数的对比宏和函数的一个对比 7. #和###运算符##运算符 8. 命名约定9. #undef10. 命令行定义11. 条件编译常见的条件编译 12. 头文件的包含头文件的包含方式库文件包含嵌…

移动端web开发布局

目录 flex布局&#xff1a; flex布局父项常见属性&#xff1a; flex布局子项常见属性&#xff1a; REM适配布局&#xff1a; 响应式布局&#xff1a; flex布局&#xff1a; 需要先给父类盒子设置display&#xff1a;flex flex是flexiblebox的缩写&#xff0c;意为"弹…

【DC渗透系列】DC-4靶场

主机发现 arp-scan -l┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:6b:ed:27, IPv4: 192.168.100.251 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.100.1 00:50:56:c0:00:08 …

【人工智能教育】“奇幻森林里的决战:小明‘剑’指期末,勇闯试卷迷宫

在智慧校园的奇幻乐园中&#xff0c;教育的故事不再局限于传统的粉笔与黑板&#xff0c;而是跃然于光影之间&#xff0c;流淌于数据之海。小明和他的同学们正是这个新世界的探险者&#xff0c;他们手握名为“智能辅导助手”的魔法棒&#xff0c;勇闯知识的迷宫。每当他们在力学…

sheng的学习笔记-网络爬虫scrapy框架

基础知识&#xff1a; scrapy介绍 何为框架&#xff0c;就相当于一个封装了很多功能的结构体&#xff0c;它帮我们把主要的结构给搭建好了&#xff0c;我们只需往骨架里添加内容就行。scrapy框架是一个为了爬取网站数据&#xff0c;提取数据的框架&#xff0c;我们熟知爬虫总…

腾讯云4核8G服务器多少钱一年?

腾讯云4核8G服务器S5和轻量应用服务器优惠价格表&#xff0c;轻量应用服务器和CVM云服务器均有活动&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;标准型SA2服务器1444.8元一年&#xff0c;轻量应用服务器4核8G12M带宽一…

JavaScript 遍历文档生成目录结构

JavaScript 遍历文档生成目录结构 要遍历 HTML 文档并生成目录结构&#xff0c;你可以使用 JavaScript 来进行 DOM 操作和遍历。以下是一个简单的示例代码&#xff0c;演示了如何遍历文档中的标题元素&#xff08;例如 <h1>、<h2>、<h3> 等&#xff09;&…

c++求三个数中最大数

#include<iostream> using namespace std; int main() { int a,b,c; cout<<"请输入三个数字"<<endl;//end后面为小写的L cin>>a>>b>>c; if(a>b&&a>c) cout<<"最大数为a:"<<a<<e…

vulnhub-->hacksudo-Thor靶机详细思路

目录 1. IP探测2.端口服务扫描3.网站漏洞扫描4.目录扫描5.信息分析6.破壳漏洞(Shellshock)nmap---漏洞检测CVE-2014-6271 7.nc反弹8.提权9.service提权 1. IP探测 ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:10:3c:9b, IPv4: 19…

Day39- 动态规划part07

一、爬楼梯 题目一&#xff1a;57. 爬楼梯 57. 爬楼梯&#xff08;第八期模拟笔试&#xff09; 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬至多m (1 < m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a;…

python接口自动化---接口测试报告模板(详解)

简介 接口测试报告是软件测试过程中非常重要的一部分&#xff0c;通过接口测试报告我们可以了解系统在接口层面上的稳定性和可靠性。下面是一个简单的接口测试报告模板&#xff1a; 测试概述 在这个部分中&#xff0c;您需要简要阐述接口测试的目的和范围。测试环境 在这个部…

第80讲订单管理功能实现

后端 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace"com.java1234.mapper.OrderM…

opencv mat用法赋值克隆的操作和一些基本属性

//Mat基本结构 (头部 数据部分) //赋值的话 就是修改了指针位置 但还是指向了原来数据 并没创建数据 本质上并没有变 //只有克隆或者拷贝时 它才会真正复制一份数据 //代码实现 //创建方法 - 克隆 //Mat m1 src.clone(); //复制 //Mat m2; //src.copyTo(m2); //赋值法 …

007集——数据存储的端序(大端序和小端序转换代码)——VB/VBA

VB/VBA存储的端序 1、要想制造高性能的VB/VBA代码&#xff0c;离了指针是很难办到的。 2、因为VB/VBA里&#xff0c;用Long来表示指针&#xff0c;而32位(包括64位兼容的)计算机里4字节整数的处理&#xff0c;是最快的方式&#xff01; 3、要想用指针来处理数据&#xff0c;…

刘知远LLM——神经网络基础

文章目录 神经网络基础基本构成如何训练&#xff1f; Word2Vec例子负采样&#xff1a; 循环神经网络 RNN门控计算单元 GRU长短时记忆网络 LSTM遗忘门输入门输出门双向RNN卷积神经网络 CNNpytorch实战 神经网络基础 基本构成 全称&#xff1a;人工神经网络。启发于生物神经细胞…

LeetCode 0094.二叉树的中序遍历:递归/迭代(栈模拟递归)

【LetMeFly】94.二叉树的中序遍历&#xff1a;递归/迭代(栈模拟递归) 力扣题目链接&#xff1a;https://leetcode.cn/problems/binary-tree-inorder-traversal/ 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root […