当前位置: 首页 > news >正文

那个网站卖数据库红河网站建设

那个网站卖数据库,红河网站建设,wordpress声明插件,网站建设首页草图题目部分 题目计算最大乘积难度易题目说明给定一个元素类型为小写字符串的数组&#xff0c;请计算两个没有相同字符的元素长度乘积的最大值。 如果没有符合条件的两个元素&#xff0c;返回 0。输入描述输入为一个半角逗号分隔的小写字符串的数组&#xff0c;2< 数组长度<…

题目部分

题目计算最大乘积
难度
题目说明给定一个元素类型为小写字符串的数组,请计算两个没有相同字符的元素长度乘积的最大值。
如果没有符合条件的两个元素,返回 0。
输入描述输入为一个半角逗号分隔的小写字符串的数组,2<= 数组长度<=100,0< 字符串长度<= 50。
输出描述两个没有相同字符的元素长度乘积的最大值。
补充说明
------------------------------------------------------
示例
示例1
输入iwdvpbn,hk,iuop,iikd,kadgpf
输出14
说明数组中有 5 个元素。
iwdvpbn 与 hk 无相同的字符,满足条件,iwdvpbn 长度为 7,hk 长度为 2,乘积为 14 (7 * 2)。
iwdvpbn 与 iuop、iikd、kadgpf 都有相同的字符,不满足条件。
iuop 与 iikd、kadgpf 均有相同的字符,不满足条件。
iikd 与 kadgpf 有相同的字符,不满足条件。
因此,输出为 14。


解读与分析

题目解读

给定一个长字符串,以 “,” 为间隔符分隔成多个字符串。请从这些字符串中找出两个字符串,保证在这两个字符串中不存在相同字符的前提下,使两个字符串的长度的乘积最大。

分析与思路

此题的步骤可以分为解析字符串,排序、数据初始化、遍历,详细说明如下:
1. 解析字符串。对输入的字符串以 “,” 为间隔符,把它们解析成多个字符串,放到数组 stringArr 中。
2. 对数组 stringArr 排序。排序规则为长度最长的字符串排在最前面。
3. 数据初始化。对已排序的 stringArr,统计每个元素(字符串)所包含的字符,放到集合中;计算字符串的长度。创建两个数组,第一个数组为 charSetArr,其第 i 个元素为 stringArr 中第 i 个元素包含的字符结合;第二个数组 lengArr,其第 i 个元素为 stringArr 中第 i 个元素的长度。
4. 遍历。
1)  初始化乘积,设为 maxProduct,初始值 0。
2)  两两比较字符串。把字符串 stringArr[0] 分别与 
stringArr[1]、stringArr[2] …… stringArr[n -1] 进行比较;之后把字符串 stringArr[1] 分别与 stringArr[2]、stringArr[3] …… stringArr[n -1] 比较。
比较规则是,在比较时,如果不存在交集,即charSetArr[0] 与 charSetArr[i] 不存在交集,则计算 lengthArr[0] 与 lengthArr[i] 的乘积,设为 tmpProduct,如果 tmpProduct 大于 maxProduct,则把 tmpProduct 赋值个 maxProduct。当找到 charSetArr[0] 与 charSetArr[i] 不存在交集后,不再判断 charSetArr[0]
与  其他字符串是否存在交集,因为已经不存在乘积比它更大。

此方法的时间复杂度为 O(n^{2}),空间复杂度为O(n^{2})。


代码实现

Java代码

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;/*** 计算最大乘积* * @version 0.1* @author Frank**/
public class StringLengthMaxProduct {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {String input = sc.nextLine();processStringLengthMaxProduct( input );}}private static void processStringLengthMaxProduct( String input ){String[] strArr = input.split( "," );Arrays.sort( strArr, new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {// 长度最长的排在最前面return o2.length() - o1.length();}});Set[] charSetArr = new HashSet[ strArr.length ];int[] lengthArr = new int[ strArr.length ];initCharSetInfo( strArr, charSetArr, lengthArr );int ret = getMaxProduct( charSetArr, lengthArr );System.out.println( ret );}private static void initCharSetInfo( String[] strArr, Set[] charSetArr,int[] lengthArr ){for( int i = 0; i < strArr.length; i ++ ){String curStr = strArr[i];lengthArr[i] = curStr.length();Set<Character> curSet = new HashSet<Character>();for( int j = 0; j < curStr.length(); j ++ ){curSet.add( curStr.charAt( j ) );}charSetArr[i] = curSet;}}private static int getMaxProduct( Set[] charSetArr,int[] lengthArr ){int maxProduct = 0;int size = charSetArr.length;boolean needBreak = false;for( int i = 0; i < size; i ++ ){for( int j = i + 1; j < size; j ++ ){if( ( j == i + 1 ) && ( lengthArr[i] * lengthArr[j] < maxProduct ) ){needBreak = true;break;}// 包含相同字符if( !Collections.disjoint( charSetArr[i], charSetArr[j])){continue;}int product = lengthArr[i] * lengthArr[j];if( product > maxProduct){maxProduct = product;}break;}if( needBreak ){break;}}return maxProduct;}
}

JavaScript代码

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function() {while (line = await readline()) {processStringLengthMaxProduct(line);}
}();function processStringLengthMaxProduct(input) {var strArr = input.split(",");strArr.sort(function(a, b) {return b.length - a.length;});var charSetArr = new Array();var lengthArr = new Array();initCharSetInfo(strArr, charSetArr, lengthArr);var ret = getMaxProduct(charSetArr, lengthArr);console.log(ret);
}function initCharSetInfo(strArr, charSetArr, lengthArr) {for (var i = 0; i < strArr.length; i++) {var curStr = strArr[i];lengthArr[i] = curStr.length;var curSet = new Set();for (var j = 0; j < curStr.length; j++) {curSet.add(curStr.charAt(j));}charSetArr[i] = curSet;}
}function getMaxProduct(charSetArr, lengthArr) {var maxProduct = 0;var size = charSetArr.length;var needBreak = false;for (var i = 0; i < size; i++) {for (var j = i + 1; j < size; j++) {if ((j == i + 1) && (lengthArr[i] * lengthArr[j] < maxProduct)) {needBreak = true;break;}// 包含相同字符if (!isSetDisjoint(charSetArr[i], charSetArr[j])) {continue;}var product = lengthArr[i] * lengthArr[j];if (product > maxProduct) {maxProduct = product;}break;}if (needBreak) {break;}}return maxProduct;
}function isSetDisjoint(charSet1, charSet2) {for (var ele of charSet2) {if (charSet1.has(ele)) {return false;}}return true;
}

(完)

http://www.hkea.cn/news/957792/

相关文章:

  • 西安有哪些做网站的公司好邵阳疫情最新消息
  • asia域名的网站竞价广告
  • 怎么注册公司支付宝账号seo求职信息
  • 多语言网站怎么做网络推广平台公司
  • 山东公司注册网站怎样写营销策划方案
  • 河北省香河县建设局网站中国互联网协会
  • 北京丰台区网站建设游戏推广赚佣金的平台
  • 网站没排名怎么办搜索引擎广告优化
  • wordpress内容主题模板网络网站推广选择乐云seo
  • 电子元器件商城网站建设百度开户怎么开
  • 企业网站开发基本流程百度博客收录提交入口
  • 甘特图模板关于网站建设微信营销模式
  • 网站建设的swot分析长尾关键词挖掘精灵
  • 发布自己的做家教的网站网店运营推广登录入口
  • b s网站系统如何做性能测试百度推广运营怎么做
  • 洛阳seo外包公司费用seo的中文意思
  • 政府网站建设遵循的原则seo网站内容优化
  • java做网站具体步骤邵阳seo优化
  • 自己做的网站如何放进服务器今天今日头条新闻
  • 男装网站的网站建设背景惠州seo按天计费
  • 如何快速提高网站排名互联网项目推广
  • icp备案网站名称更改成都网站设计
  • 企业网站建设需求分析seo排名资源
  • python基础教程雪峰东莞搜索seo网站关键词优化
  • b2b网站开发供应商小程序开发教程全集免费
  • 用自己的手机做网站外链网站是什么
  • 市场调研公司介绍网站推广优化公司
  • 玉溪人民政府网站建设现状新网站seo
  • 湖南餐饮网站建设2023北京封控了
  • 重庆网站设计人员外贸网站搭建推广