必威体育Betway必威体育官网
当前位置:首页 > IT技术

华为OJ初级:近义词维护

时间:2019-08-07 08:10:00来源:IT技术作者:seo实验室小编阅读:88次「手机版」
 

维护的近义词

近义词维护

给定接口,设置两个单词相互近义。近义词具有相互传递性,如果A和B为近义词,B和C是近义词,那么A、B、C都为近义词。要求提供接口,查询给定的两个但是是否是近义词关系。并且能提供接口清除所有的近义词关系。

接口说明

/**

* 设置2个单词为近义词

* @param word1 单词一

* @param word2 单词二

* @return 0为成功,-1为失败或其他异常

*/

public int setSynonyms(String word1, String word2)

/**

*判断2个单词是否为近义词(同一单词视为近义词)

*@param word1 单词一

*@param word2 单词二

*@return 为近义词返回true,否则返回false

*/

public boolean isSynonyms(String word1, String word2)

/**

* 清除单词之间的近义词关系

*/

public void clearRelations()

package huawei;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;

/**
 * <pre>
 * 近义词维护
 * 
 * 
 * 给定接口,设置两个单词相互近义。
 * 近义词具有相互传递性,如果A和B为近义词,B和C是近义词,那么A、B、C都为近义词。
 * </pre>
 * 
 */
public class Demo {
	
	public static ArrayList<HashSet<String>> arraylist = new ArrayList<HashSet<String>>();
	/**
	 * 设置2个单词为近义词
	 * 
	 * @param word1 单词一
	 * @param word2 单词二
	 * @return {@code 0}为成功,{@code -1}为失败或其他异常
	 */
	public int setSynonyms(String word1, String word2) {
		if(null == word1 || null == word2 || "".equals(word1) || "".equals(word2) || word1.equals(word2)){
			return -1;
		}
		if(arraylist.isempty()){
			
			HashSet<String> st = new HashSet<String>();
			st.add(word1);
			st.add(word2);
			arraylist.add(st);
			
		}
		else
		{
			for (int i = 0;i < arraylist.size();i++)
			{
				if(arraylist.get(i).contains(word1) || arraylist.get(i).contains(word2)){
					arraylist.get(i).add(word1);
					arraylist.get(i).add(word2);
					break;
				}
				
				if(i == arraylist.size()-1)
				{
					HashSet<String> hashSet = new HashSet<String>();
					hashSet.add(word1);
					hashSet.add(word2);
					arraylist.add(hashSet);
				}

			}		
		}
		return 0;
	}

	/**
	 * 判断2个单词是否为近义词(同一单词视为近义词)
	 * 
	 * @param word1 单词一
	 * @param word2 单词二
	 * @return 为近义词返回{@code true},否则返回{@code false}
	 */
	public boolean isSynonyms(String word1, String word2) {
		if(null == word1 || null == word2 || "".equals(word1) || "".equals(word2)){
			return false;
		}
		if(word1.equals(word2)){
			return true;
		}
		for (Set<String> set : arraylist) {
			if(set.contains(word1) && set.contains(word2)){
				return true;
			}
		}
		return false;
	}

	/**
	 * 清除单词之间的近义词关系
	 */
	public void clearRelations() {
		arraylist.clear();
	}

}
package testcase;

import huawei.Demo;
import junit.framework.TestCase;

public class DemoTest extends TestCase{

	public void testSynonyms() {
	
		Demo demo = new Demo();
		
		demo.setSynonyms("good", "nice");
		demo.setSynonyms("nice", "great");
		demo.setSynonyms("perfect", "great");	
		demo.setSynonyms("aaa", "bbb");
		demo.setSynonyms("bbb", "ccc");
			
		assertTrue(demo.isSynonyms("good","nice"));
		assertTrue(demo.isSynonyms("good","great"));
		assertTrue(demo.isSynonyms("good","perfect"));
		assertTrue(demo.isSynonyms("good","good"));
		assertTrue(demo.isSynonyms("nice","nice"));
		assertTrue(demo.isSynonyms("aaa","ccc"));
		assertFalse(demo.isSynonyms("great","aaa"));
		assertFalse(demo.isSynonyms("good","bad"));
		assertFalse(demo.isSynonyms("good","not bad"));
		demo.clearRelations();
		assertTrue(demo.isSynonyms("good","good"));
		assertTrue(demo.isSynonyms("nice","nice"));
		assertFalse(demo.isSynonyms("good","nice"));
		assertFalse(demo.isSynonyms("good","great"));
		assertFalse(demo.isSynonyms("good","perfect"));
		assertFalse(demo.isSynonyms("aaa","ccc"));
		
	}
}

相关阅读

IP-Guard监视和维护功能详解

IP-Guard监视:可以查看计算机屏幕,聊天记录,邮件内容,维护功能可以远程关闭计算机,关闭进程,远程删除软件等

淘宝老客户维护和管理的技巧是什么?

老客户的维护成本小但是价值却很大,所以很多卖家慢慢的开始重视老客户营销,想要让客户重复持续性的购买自己的商品,下面为大家带来一

老司机教你如何写出没人敢维护的代码!

本文来自于微信公众号程序人生(ID:coder_life),作者:阿木,站长之家经授权转载。编写除了自己没人能看懂的代码,是一种怎样的体验?下面

淘宝店铺怎么维护?春节期间如何维护?

要知道春节已经越来越近了,那么很多在淘宝上开网店的小伙伴们要知道在春节这个时间接阶段要怎么来进行店铺的维护呢。小编今天就在

软件维护技术

(一) 软件维护的基本概念和基本活动 1、软件维护的定义 ①改正新维护:诊断和改正用户使用软件时所发现的软件错误过程 ②适应性维护

分享到:

栏目导航

推荐阅读

热门阅读